力扣刷题记录22.1-----541. 反转字符串 II

目录

  • 一、题目
  • 二、代码
  • 三、运行结果![在这里插入图片描述](https://img-blog.csdnimg.cn/e6f26193faf2423fbfa67f7b88018b32.png)


一、题目

力扣刷题记录22.1-----541. 反转字符串 II_第1张图片

二、代码

class Solution {
public:
    string reverseStr(string s, int k) {
    
    std::cout<<"s   "<<s<<std::endl;
    std::cout<<"k   "<<k<<std::endl;
    
    int s_size=s.size();
    int over_time=s_size/(2*k);  //完整的反转次数 不包含最后一次特殊操作
    int remain_length=s_size%(2*k);

    int i,j;
    int count=0;

    //第一步 将前面的字符串反转
    string::iterator it_over_begin=s.begin();
    string::iterator it_over_end=s.begin(); 

    //k为1 反转1个字符等于不反转
    if(k==1)  return s;
    
    while(it_over_end!=s.end()-remain_length)
    {
       it_over_end++;
       count=count+1;
    
       if(count%k==0&&count%(2*k)!=0)
       {
         reverse(it_over_begin,it_over_end);
         std::cout<<"alive"<<std::endl;
       }
          if(count%(2*k)==0)
       {
         it_over_begin=it_over_end;
       }

    }

   //reverse(s.begin(),s.end());
   for(i=0;i<s.size();i++)
   {
       std::cout<<"  "<<s[i];
   }
   std::cout<<std::endl;
   
   if(remain_length<=k) reverse(it_over_end,s.end());

   if(remain_length>k) reverse(it_over_end,it_over_end+k);   

    return s;
    }
};

三、运行结果力扣刷题记录22.1-----541. 反转字符串 II_第2张图片

你可能感兴趣的:(#,leetcode,算法,职场和发展)