字符串
344. 反转字符串
class Solution {
public void reverseString(char[] s) {
int len = s.length;
int i = 0,j = len-1 ;
while(i<=j){
swap(s,i,j);
i++;
j--;
}
}
public void swap(char[] s,int a,int b){
char c = s[a];
s[a] = s[b];
s[b] = c;
}
}
541. 反转字符串 II
没有专门的函数可以用来反转字符串,想要反转就只能自己写反转函数
class Solution {
public String reverseStr(String s, int k) {
int len = s.length();
char[] arr = s.toCharArray();
for(int i = 0;i<len;i+=2*k){
reverse(arr,i,Math.min(i+k,len)-1);
}
return new String(arr);
}
public void reverse(char[] arr,int left,int right){
while(left<right){
char temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
}
剑指 Offer 05. 替换空格
class Solution {
public String replaceSpace(String s) {
StringBuilder sb = new StringBuilder();
for(int i=0;i<s.length();++i){
char c = s.charAt(i);
if(c == ' ') sb.append("%20");
else sb.append(c);
}
return sb.toString();
}
}
很多时候,String都需要转换成char数组来实现操作。
151. 翻转字符串里的单词
class Solution {
public String reverseWords(String s) {
//除去开头和末尾的空白字符
s = s.trim();
// Arrays.List() 将数组返回给list
// 正则匹配连续的空白字符作为分隔符分割
// "\\s+" :\\s表示空格 回车 换行等空白符 + 表示一个或多个
List<String> list = Arrays.asList(s.split("\\s+"));
Collections.reverse(list);
return String.join(" ",list);
}
}
trim(): 去掉首尾空格
Arrays.asList(): 返回一个list
剑指 Offer 58 - II. 左旋转字符串
class Solution {
public String reverseLeftWords(String s, int n) {
char[] arr = s.toCharArray();
//java 数组没有reverse操作
reverse(arr,0,n-1);
reverse(arr,n,arr.length-1);
reverse(arr,0,arr.length-1);
return new String(arr);
}
// 那我就自己写一个reverse就好了
public void reverse(char[] arr,int left,int right){
char temp;
while(left<=right){
temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
}
28. 实现 strStr()
class Solution {
public int strStr(String haystack, String needle) {
// KMP还是不会写
char[] arrH = haystack.toCharArray();
char[] arrN = needle.toCharArray();
int lenH = arrH.length;
int lenN = arrN.length;
for(int i = 0;i+lenN<=lenH;i++){
boolean flag = true;
for(int j = 0;j<lenN;j++){
if(arrH[i+j]!=arrN[j]){
flag = false;
break;
}
}
if(flag){
return i;
}
}
return -1;
}
}