马鞍山网站建设,门户网站建设经验总结报告,网上书城 网站建设策划书,搭建网页游戏本文涉及知识点
C差分数组
LeetCode2381. 字母移位 II
给你一个小写英文字母组成的字符串 s 和一个二维整数数组 shifts #xff0c;其中 shifts[i] [starti, endi, directioni] 。对于每个 i #xff0c;将 s 中从下标 starti 到下标 endi #xff08;两者都包含#…本文涉及知识点
C差分数组
LeetCode2381. 字母移位 II
给你一个小写英文字母组成的字符串 s 和一个二维整数数组 shifts 其中 shifts[i] [starti, endi, directioni] 。对于每个 i 将 s 中从下标 starti 到下标 endi 两者都包含所有字符都进行移位运算如果 directioni 1 将字符向后移位如果 directioni 0 将字符向前移位。 将一个字符 向后 移位的意思是将这个字符用字母表中 下一个 字母替换字母表视为环绕的所以 ‘z’ 变成 ‘a’。类似的将一个字符 向前 移位的意思是将这个字符用字母表中 前一个 字母替换字母表是环绕的所以 ‘a’ 变成 ‘z’ 。 请你返回对 s 进行所有移位操作以后得到的最终字符串。 示例 1 输入s “abc”, shifts [[0,1,0],[1,2,1],[0,2,1]] 输出“ace” 解释首先将下标从 0 到 1 的字母向前移位得到 s “zac” 。 然后将下标从 1 到 2 的字母向后移位得到 s “zbd” 。 最后将下标从 0 到 2 的字符向后移位得到 s “ace” 。 示例 2: 输入s “dztz”, shifts [[0,0,0],[1,1,1]] 输出“catz” 解释首先将下标从 0 到 0 的字母向前移位得到 s “cztz” 。 最后将下标从 1 到 1 的字符向后移位得到 s “catz” 。 提示 1 s.length, shifts.length 5 * 104 shifts[i].length 3 0 starti endi s.length 0 directioni 1 s 只包含小写英文字母。
差分数组
将directioni的0全部改成-1。 对各 shifts[i]vDiff[starti],vDiff[endi1]–。 令diff对应的数据数组为a[i] tmp (s[i]-‘a’a[i])%26;注意tmp可能是负数。 则s[i] ‘a’ (tmp26)%26;
代码
核心代码
class Solution {public:string shiftingLetters(string s, vectorvectorint shifts) {const int N s.length();vectorint diff(N 1);for (const auto v : shifts) {const int iAdd (v[2] 1) ? 1 : -1;diff[v[0]] iAdd;diff[v[1] 1]-iAdd;}int cur 0;string ret;for (int i 0; i N;i) {cur diff[i];const auto tmp (s[i] - a cur) % 26;ret char(a (tmp26)%26);}return ret;}};单元测试
string s;vectorvectorint shifts;TEST_METHOD(TestMethod1){s abc, shifts { {0,1,0} };auto res Solution().shiftingLetters(s, shifts);AssertEx(string(zac), res);}TEST_METHOD(TestMethod11){s abc, shifts { {0,1,0},{1,2,1},{0,2,1} };auto res Solution().shiftingLetters(s, shifts);AssertEx(string(ace), res);}TEST_METHOD(TestMethod12){s dztz, shifts { {0,0,0},{1,1,1} };auto res Solution().shiftingLetters(s, shifts);AssertEx(string(catz), res);}扩展阅读
我想对大家说的话工作中遇到的问题可以按类别查阅鄙人的算法文章请点击《算法与数据汇总》。学习算法按章节学习《喜缺全书算法册》大量的题目和测试用例打包下载。重视操作有效学习明确的目标 及时的反馈 拉伸区难度合适 专注闻缺陷则喜(喜缺)是一个美好的愿望早发现问题早修改问题给老板节约钱。子墨子言之事无终始无务多业。也就是我们常说的专业的人做专业的事。如果程序是一条龙那算法就是他的是睛失败反思成功 成功反思成功
视频课程
先学简单的课程请移步CSDN学院听白银讲师也就是鄙人的讲解。 https://edu.csdn.net/course/detail/38771 如何你想快速形成战斗了为老板分忧请学习C#入职培训、C入职培训等课程 https://edu.csdn.net/lecturer/6176
测试环境
操作系统win7 开发环境 VS2019 C17 或者 操作系统win10 开发环境 VS2022 C17 如无特殊说明本算法用**C**实现。