给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。
示例:
输入: s = "abcdefg", k = 2 输出: "bacdfeg"
要求:
- 该字符串只包含小写的英文字母。
- 给定字符串的长度和 k 在[1, 10000]范围内。
class Solution { public: string reverseStr(string s, int k) { /*给定一个字符串和一个整数 k, 你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。 //如果剩余少于 k 个字符,则将剩余的所有全部反转。 如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。*/ int i=0; if(s.size()<=k) reverse(s.begin(),s.end()); else { while(2*(i+1)*k <= s.size()) { reverse((s.begin()+i*k*2),(s.begin()+i*k*2+k)); i++; } if(s.size()-2*i*k<=k) reverse((s.begin()+i*k*2),s.end()); else reverse((s.begin()+i*k*2),(s.begin()+i*k*2+k)); } return s; } };
博客围绕字符串反转问题展开,给定字符串和整数 k,需对每 2k 个字符的前 k 个反转,剩余少于 k 个全反转,小于 2k 但大于等于 k 个则反转前 k 个,字符串仅含小写英文字母,长度和 k 在[1, 10000]范围。
1835

被折叠的 条评论
为什么被折叠?



