您的位置:首页 > 其它

String:541. Reverse String II

2017-09-12 16:57 316 查看


    提交了好几遍才过的。思路就是设一个下标cur,是每个2k的开始位置,根据cur判断cur位置后面够不够2k,如果不够k,翻转剩下的所有;如果够k但不够2k,翻转前k个。

class Solution {
public:
string reverseStr(string s, int k) {
int cur = 0;
while(1)
{
if(s.size() - cur < k)
{
reverse(s.begin() + cur, s.end());
cout << s << endl;
break;
}
if(s.size() - cur >= k && s.size() - cur <= 2 * k)
{
reverse(s.begin() + cur, s.begin() + cur + k);
break;
}
reverse(s.begin() + cur, s.begin() + cur + k);
cur = cur + 2 * k;
}
return s;
}
};    同样的思路,看别人的代码:
class Solution {
public:
string reverseStr(string s, int k) {
for (int i = 0; i < s.size(); i += 2*k)
reverse(s.begin()+i, min(s.begin()+i+k, s.end()));
return s;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: