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:
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;
}
};
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;
}
};
相关文章推荐
- Leetcode 541. Reverse String II(Easy)
- LeetCode-541. Reverse String II (Java)
- [leetcode]541. Reverse String II
- Leetcode OJ Contest23 Reverse String II_Leetcode541
- LeetCode 541 Reverse String II
- LeetCode 541. Reverse String II (字符串翻转)
- leetcode 541 Reverse String II C++
- [leetcode]: 541. Reverse String II
- The Solution to Leetcode 541 Reverse String II
- leetcode 541. Reverse String II 反转字符串
- Leetcode #541 Reverse String II
- [LeetCode]541. Reverse String II(间隔反转字符串)
- LeetCode 541. Reverse String II(C++版)
- [LeetCode] 344 Reverse String && 541 Reverse String II
- leetcode -- 541. Reverse String II 【字符串反转 + 双指针 + 状态记录 + 数组与堆内存】
- leetcode541 Reverse StringII java
- LeetCode 541. Reverse String II
- LeetCode 541 Reverse String II
- LeetCode 541:Reverse String II (c++)
- [Leetcode] 541. Reverse String II 解题报告