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;
}
posted @ 2021-03-14 14:54  平平无奇的打工人  阅读(47)  评论(0)    收藏  举报