字符串
344.反转字符串
- 调用库函数
代码:
class Solution {
public void reverseString(char[] s) {
// 1.调用库函数
char[] ch = new StringBuffer(new String(s)).reverse().toString().toCharArray();
for(int i=0; i<s.length; i++){
s[i] = ch[i];
}
}
}
541.反转字符串II
解题思路:
双指针遍历, i和j的距离始终是2*k, 对于不超过字符串长度的进行处理, 对于超过长度的另外处理, 模拟题
代码:
class Solution {
public String reverseStr(String s, int k) {
StringBuilder sb = new StringBuilder();
// 双指针遍历
int i = 0, j = 0;
for(i=0,j=2*k; j<=s.length(); i=j, j+=2*k){
StringBuilder str = new StringBuilder(s.substring(i, i + k)).reverse();
sb.append(str).append(s.substring(i + k, j));
}
// 处理剩余字符
if(j > s.length()) {
String str = s.substring(i);
if(str.length() >= k) {
sb.append(new StringBuilder(str.substring(0, k)).reverse());
sb.append(str.substring(k));
} else {
sb.append(new StringBuilder(str).reverse());
}
}
return sb.toString();
}
}
剑指offer 05 替换空格
调用库函数
代码:
class Solution {
public String replaceSpace(String s) {
return s.replace(" ", "%20");
}
}
151.翻转字符串里的单词
解题思路: 以空格分割字符串得到字符串数组, 然后将倒序遍历字符串数组, 遇到空字符就跳过,否则将其拼接成字符串, 中间加上空格
代码:
class Solution {
public String reverseWords(String s) {
s = s.trim();
String[] str = s.split(" ");
StringBuilder sb = new StringBuilder();
for(int i=str.length-1; i>=0; i--){
if(!str[i].equals(""))
sb.append(str[i]).append(" ");
}
return sb.toString().trim();
}
}
剑指Offer58-II.左旋转字符串
解题思路: 截取子串然后拼接
代码:
class Solution {
public String reverseLeftWords(String s, int n) {
return s.substring(n) + s.substring(0, n);
}
}