一、 剑指 Offer 05. 替换空格
要求:请实现一个函数,把字符串 s
中的每个空格替换成"%20"。
解法1: StringBuilder结合.equals
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class Solution { public String replaceSpace(String s) { StringBuilder sb = new StringBuilder(); for(String each: s.split("")){ if(each.equals(" ")){ sb.append("%20"); continue; } sb.append(each); } return sb.toString();
} }
|
解法2: String的replace方法
1 2 3 4 5
| class Solution { public String replaceSpace(String s) { return s.replace(" ", "%20"); } }
|
解法3: 使用charAt分割和StringBuilder
1 2 3 4 5 6 7 8 9 10 11
| 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(); } }
|
解法4:双指针法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| public String replaceSpace(String s) { if(s == null || s.length() == 0){ return s; } StringBuilder str = new StringBuilder(); for (int i = 0; i < s.length(); i++) { if(s.charAt(i) == ' '){ str.append(" "); } } if(str.length() == 0){ return s; } int left = s.length() - 1; s += str.toString(); int right = s.length()-1; char[] chars = s.toCharArray(); while(left>=0){ if(chars[left] == ' '){ chars[right--] = '0'; chars[right--] = '2'; chars[right] = '%'; }else{ chars[right] = chars[left]; } left--; right--; } return new String(chars); }
|
二、 剑指 Offer 58 - II. 左旋转字符串
要求:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
解法1: 循环与StringBuilder拼接,切片
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class Solution { public String reverseLeftWords(String s, int n) { String[] strArr = s.split(""); StringBuilder sb = new StringBuilder(); for(int i = n; i<strArr.length;i++){ sb.append(strArr[i]); } for(int j = 0; j< n ; j++){ sb.append(strArr[j]); }
return sb.toString();
} }
|
解法2: 调用substring
使用子字符串拼接。
1 2 3 4 5 6 7
| class Solution { public String reverseLeftWords(String s, int n) { return s.substring(n, s.length()) + s.substring(0, n); } }
|