【leetcode】T541 (两点反思)
解题反思
闷着头往,往往会写成一团浆糊,还推倒重来,谋划好全局思路再开始很重要。
熟悉C++的工具库很重要,一开始看到反转就还想着用stack来着,后面突然想起来用reverse函数刚好可以用哇,这题也就迎刃而解了
题面
541. 反转字符串 II - 力扣(LeetCode)
思路
就是用s.length()-i*k 来表示剩余长度,按照题目叙述来分类讨论。
利用reverse函数逐段对s进行翻转。
实现代码
class Solution {
public:
string reverseStr(string s, int k) {
if(k == s.length())
{//特殊情况讨论
reverse(s.begin(), s.end());
return s;
}
for(int i=0; i*k <s.length() ;i+=2)
{
if(s.length()-i*k < k)
{
reverse(s.begin() + i*k, s.end());
}
else// if(s.length()-i*k < 2*k)
{
reverse(s.begin() + i*k, s.begin() + (i+1)*k);
}
}
return s;
}
};