29.字符串反转
class Solution {
public void reverseString(char[] s) {
int i = 0;
int j = s.length - 1;
while(j>i){
char temp = s[j];
s[j] = s[i];
s[i] = temp;
i++;
j--;
}
}
}
30.替换空格
**思路:**开一个buffer 的StringBuffer
来记录答案,遍历原串,遇到空格则往后拼加%20
,反之将字符往后拼加
public StringBuffer
append(String str)
可以把任意类型添加到字符串缓冲区里面,并返回字符串缓冲区本身
实现代码:
class Solution {
public String replaceSpace(String s) {
StringBuffer res = new StringBuffer();
for(Character c : s.toCharArray()){
if(c == ' ') res.append("%20");
else res.append(c);
}
return res.toString();
}
}
31. 反转字符串II
**思路:**由于每次都是2k
的区间对前k
个翻转,因此我们枚举的时候,以2k
为枚举区间长度,注意下边的具体要求即可
- 如果剩余字符少于
k
个,则将剩余字符全部反转。 - 如果剩余字符小于
2k
但大于或等于k
个,则反转前k
个字符,其余字符保持原样。
实现代码:
class Solution {
public String reverseStr(String s, int k) {
char[] ch = s.toCharArray();
for(int i = 0;i < ch.length;i+=2*k){
if(i+k<=ch.length){
reverse(ch,i,i+k-1);
continue;
}
reverse(ch,i,ch.length-1);
}
return new String(ch);
}
public void reverse(char[] ch,int i,int j){
for(;i<j;i++,j--){
char temp = ch[i];
ch[i] = ch[j];
ch[j] = temp;
}
}
}
32.剑指II.左旋转字符串
思路:用字符串拼接
代码实现:
class Solution {
public String reverseLeftWords(String s, int n) {
String result ="";
int m = s.length();
for(int i = n;i < m;i++){
result += (s.charAt(i));
}
for(int i = 0;i < n;i++){
result += (s.charAt(i));
}
return result;
}
}