当前位置: 首页 > news >正文

力扣2381. 字母移位 II

在这里插入图片描述
这一题的意思是给出一个字符串,现在给出一系列操作,每一个操作是对字符串的区间的每一个字符进行一个前移或后移操作,最后返回所有操作后的最终字符串。
对区间进行操作,很明显可以用差分来表示区间变化,我们可以对差分数组求前缀和从而得到每一个位置最终的变化,如果最终这个位置的》0,那么说明它是后移,如果它是《0那么表示前移
特别需要注意的是,可能它的移动值会超过数组的大小,因此我们需要对变化值进行一个取模,保证它处在0-25之间。
完整代码如下:

class Solution {
public:vector<char> front;vector<char> last;string shiftingLetters(string s, vector<vector<int>>& shifts) {int n=s.size();vector<int> d(n+1,0);vector<int> dsum(n+1,0);for(int i=0;i<shifts.size();i++){int l=shifts[i][0];int r=shifts[i][1];int x=shifts[i][2];if(x==0){d[l]-=1;d[r+1]+=1;}else{d[l]+=1;d[r+1]-=1;}}for(int i=0;i<n+1;i++){if(i==0){dsum[i]=d[i];}else{dsum[i]=dsum[i-1]+d[i];}}for(int i=0;i<s.size();i++){int xx=((s[i]-'a')+dsum[i]) % 26;if(xx<0) xx += 26;   // 保证非负s[i]='a'+xx;}return s;}
};

时间复杂度O(n)
总结:这一题很明显用差分,但我在边界值上花费了大量的时间,因为它可能会超过数组的大小,因此我们要%26,同时要保证非负+26.

http://www.dtcms.com/a/406787.html

相关文章:

  • 平和县建设局网站安徽经工建设集团网站
  • Vue 配置代理
  • CatCTF2022 web wp
  • 知乎免费阅读网站石家庄新闻综合频道节目回看
  • 做网站后台主要负责什么最新室内装修风格图片
  • 机器人行业灵巧手专题研究报告
  • hive SQL查询与函数
  • 网站维护 关站 seo百度首页广告
  • 搜索引擎的网站有哪些网页设计与网站建设 倪宝童
  • Prompt Optimizer 提示词优化器安装使用
  • 淘宝网站建设的优点app推广是什么工作
  • 【C++】23. C++11(上)
  • 第三方软件登记测评机构:【LoadRunner脚本录制与调试】
  • 摄影网站开发的背景西安网站 技术支持牛商网
  • A股大盘数据-20250925分析
  • 旋转设备状态监测传感器选型要点
  • echarts项目积累
  • VS2022调试技巧
  • Vue 3 组合式 API 生命周期钩子学习笔记
  • shardingsphere加载过程
  • MinerU介绍安装
  • 好的建设网站关于建立企业网站的方案内容
  • 在mac上面使用parquet-cli查看parquet文件
  • 织梦资讯门户网站模板公司成立后网站建设
  • linux入门4.4(DHCP和DNS服务器)
  • 存储卷备份策略在海外vps数据安全中的基础规范
  • 基于MATLAB的热晕相位屏仿真
  • 天津网站优化怎么样成都金牛区建设局网站
  • 惠州网站建设佳木斯自助个人免费网站
  • 学校网站源码html重庆seo哪个强