您的位置:首页 > 其它

leetcode 541. Reverse String II(easy)

2017-04-20 11:46 357 查看
Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there are
less than k characters left, reverse all of them. If there are less than 2k but greater than or equal to k characters, then reverse the first k characters and left the other as original.

Example:

Input: s = "abcdefg", k = 2
Output: "bacdfeg"


Restrictions:
The string consists of lower English letters only.
Length of the given string and k will in the range [1, 10000]

Subscribe to see which companies asked this question.
题目的含义是每隔k个位置就截取k这么长的字符串反转,那么这里主要涉及到奇数段和偶数段字符串。
class Solution {
public:
string reverseS(string s)
{
string result;
stack<char> temp;
for(int i=0;i<s.length();i++)
{
temp.push(s[i]);

}
while(!temp.empty())
{
result += temp.top();
temp.pop();
}
return result;
}
string reverseStr(string s, int k) {
string result;
int len = s.length();
int seg = len/k;
if(seg == 0) return reverseS(s.substr(0,len));
for(int i=1;i<=seg;i++)
{
if(i%2 != 0)
result += reverseS(s.substr((i-1)*k,k));
else
result += s.substr((i-1)*k,k);
}
if(len>seg*k)
{
if(seg%2 == 0)
result += reverseS(s.substr(seg*k,len-seg*k));
else
result += s.substr(seg*k,len-seg*k);
}
return result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: