LeetCode刷题——字符串1
反转字符串 II
- 题目链接.
- 题意:给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
- 思路:题目要求每
2k
个字符要进行一次反转。用l
来记录字符串的长度,l>0
作为循环条件,每反转一次l=l-2k
,m+1记录循环次数,用m得到要反转的字符起始位置。
class Solution {
public:
string reverseStr(string s, int k) {
int l=size(s);
int i,j,m=0;
while(l>0){
if(l<k){
for(i=m*k,j=size(s)-1;i<j;i++,j--){
char t=s[i];
s[i]=s[j];
s[j]=t;
}
}
else{
for(i=m*k,j