码迷,mamicode.com
首页 > 其他好文 > 详细

541. Reverse String II

时间:2018-06-04 19:16:13      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:pre   begin   []   syn   str   return   返回   eve   断点   

 1 static int wing=[]()
 2 {
 3     std::ios::sync_with_stdio(false);
 4     cin.tie(NULL);
 5     return 0;
 6 }();
 7 
 8 class Solution 
 9 {
10 public:
11     string reverseStr(string s, int k) 
12     {
13         int len=s.length();
14         auto p=s.begin();
15         int i;
16         for(i=k;i<=len;i+=2*k)
17             reverse(p+i-k,p+i);
18         i-=2*k;
19         if(len==i)
20             return s;
21         else if(len-i>k)
22             reverse(p+i+k,s.end());
23         return s;
24     }
25 };

把数组截断,一部分一部分地逆置,以 i 为截断点,(2n-1)k处截断,截断点左侧k个元素要逆置。

在最后一截要分三类讨论,

第一类,i 刚好截到数组末尾,直接返回

第二类,i 左侧空缺元素个数小于k,即有不足k个要逆置的元素,逆置这部分元素即可

第三类,i 左侧空缺元素个数大于k,说明没有需要逆置的元素,直接返回即可

541. Reverse String II

标签:pre   begin   []   syn   str   return   返回   eve   断点   

原文地址:https://www.cnblogs.com/zhuangbijingdeboke/p/9134780.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!