541. 反转字符串II
给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
示例:
输入: s = "abcdefg", k = 2
输出: "bacdfeg"
1 class Solution { 2 public: 3 string reverseStr(string s, int k) { 4 int len = s.length(); 5 if (!len) return s; 6 int n = len / k; 7 int num = len / (2 * k); 8 int last = len - len % (2 * k); 9 vector<int> vec; 10 int index = 0; 11 vec.push_back(last); 12 //保存要处理的下标 13 for (int i = 0; i < num; i++) 14 { 15 vec.push_back(index); 16 index = index + 2 * k; 17 if (index == last) 18 { 19 break; 20 } 21 } 22 //反转下标对应的string 23 for (const auto p : vec) 24 { 25 int left = p; 26 int right = left + k - 1; 27 if (right > len - 1) right = len - 1; 28 char cur; 29 while (left < right) 30 { 31 cur = s[left]; 32 s[left] = s[right]; 33 s[right] = cur; 34 left++; 35 right--; 36 } 37 } 38 return s; 39 } 40 };
分类:
leetcode
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理