541-反转字符串 II
leetcode题解——反转字串II
题目如下
给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。
- 如果剩余字符少于 k 个,则将剩余字符全部反转。
- 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
解题思路
每次都是间隔2*k的点为分界进行字符串反转处理。
找好分界点就很容易了
void reverse(char *s, int left, int right){
char temp;
int i=left;
int j=right;
while(i<j){
temp=s[i];
s[i]=s[j];
s[j]=temp;
i++;
j--;
}
}
char * reverseStr(char * s, int k){
for(int i=0; i<strlen(s); i+=(2*k)){
if(i+k<=strlen(s)){
reverse(s,i,i+k-1);
continue;
}
reverse(s,i,strlen(s)-1);
}
return s;
}

浙公网安备 33010602011771号