题号344
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
class Solution {
public void reverseString(char[] s) {
int size=s.length;
int start=0;//首指针
int end=size-1;//尾指针
while(start<end)
//移动直到两指针相遇
{
char tmp=s[start];
s[start]=s[end];
s[end]=tmp;
start++;
end--;
}
}
}
题号541
给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。
- 如果剩余字符少于
k个,则将剩余字符全部反转。 - 如果剩余字符小于
2k但大于或等于k个,则反转前k个字符,其余字符保持原样。
class Solution {
public String reverseStr(String s, int k) {
char[]arr=s.toCharArray();//注意将字符串转化为字符数组
int size=s.length();//注意获取字符串长度时需要括号
int num1=size/(2*k); //记录有多少组2k
int num2=size%(2*k); //记录剩余多少2k
int count=0;
//处理所有组的2k
while(count<num1){
int i=2*k*count;
reverseString(arr,i,i+k-1);
count++;
}
//处理剩余部分
if(num2<k)
reverseString(arr,2*k*num1,size-1);
else
reverseString(arr,2*k*num1,2*k*num1+k-1);
String ans=new String(arr);//注意将字符串数组转化为字符串
return ans;
}
//反转指定区间的数组
public void reverseString(char[] s,int a,int b) {
int size=s.length;
int start=a;//首指针
int end=b;//尾指针
while(start<end)
//移动直到两指针相遇
{
char tmp=s[start];
s[start]=s[end];
s[end]=tmp;
start++;
end--;
}
}
}
LeetCode 344、541 字符串反转问题
1799

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



