ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

力扣算法-Day20

2026/9/27 4:41:49 拓冰建站 浏览量
力扣算法-Day20

541. 反转字符串II

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

  • 如果剩余字符少于 k 个,则将剩余字符全部反转。
  • 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

思路:双指针。

分情况讨论:

  1. 2k的整数倍 
  2. 剩余字符少于 k 
  3. 剩余字符小于 2k 但大于或等于 k 

具体实现代码:

void swap(char* a, char* b) {char temp = *a;*a = *b;*b = temp;
}
char* reverseStr(char* s, int k) {int len = strlen(s);int left;for (left = 0; left + 2*k <= len;) {//下一次的位置int nextLeft = left+2*k;int right = left + k - 1;while (left < right) {swap(&s[left],&s[right]);left++;right--;}left = nextLeft;}if (len - left < k) {int right = len - 1;while (left < right) {swap(&s[left],&s[right]);left++;right--;}} else {int right = left + k - 1;while (left < right) {swap(&s[left],&s[right]);left++;right--;}}return s;
}

 这一期专栏记录将我每天的刷题,希望各位的监督,也希望和各位共勉。

追光的人,终会光芒万丈!!