目录
344.反转字符串
思路:双指针,左右交换
541.反转字符串II
题目:541. 反转字符串 II - 力扣(LeetCode)
视频讲解:字符串操作进阶! | LeetCode:541. 反转字符串II_哔哩哔哩_bilibili
思路:遍历计数,每次达到2k,就用反转字符串的方式,反转前k个字符,怎么知道有2k个了呢?主要是这里传进来的是String,我能不能先存在一个char[ ]里面,之后转换为String返回出去。
- 我想的是count记录遍历了多少次2k,用于给left和right添加偏移量
- cur计算遍历次数,每2k次重置
- 通过while循环,反转前k个字符
尝试
class Solution {
public String reverseStr(String s, int k) {
char[] result = new char[s.length()];
int cur = 0;
int count =0;
for(int i=0;i<s.length();i++){
cur++;
if(cur==2*k){
int left = 0 + 2*k*count;
int right = k-1 + 2*k*count;
while(left<right){
result[left] = s.charAt(right);
result[right] = s.charAt(left);
right--;
left++;
if(right==left){
result[right] = s.charAt(right);
}
}
count++;
cur=0;
}
}
String str = new String(result);
return str;
}
}
题解
class Solution {
public String reverseStr(String s, int k) {
char[] result = s.toCharArray();
int n = s.length();
for(int i=0;i<n;i+=2*k){
int left = i;