替换空格
class Solution {
/*
*
* 题目:请实现一个函数,把字符串 s 中的每个空格替换成"%20"
*
* 思路1:递归:替换字符串中的字符,从前到后找到第一个目标字符,对后面剩余字符重新执行搜索。
* 思路2:字符串拆分为字符数字,复制到另一个长度为2倍的数组里,遇到空格替换。
*
* 知识点:s.substring(int beginIndex , int endIndex)
* beginIndex 是指子串开始位置,从 0 开始
* endIndex 是指字串结束位置,最大值为 s.length
* 字串的数学区间为 [beginIndex,endIndex)
*
* */
public String replaceSpace1(String s) {
if (s.length() == 0) {
return "";
}
int index = 0;
while (index < s.length()) {
if (s.charAt(index) == ' ') {
return s.substring(0, index) + "%20" + replaceSpace1(s.substring(index + 1));
}
index++;
}
return s;
}
public String replaceSpace2(String s) {
char[] chars = new char[s.length() * 3];
int index = 0;
for (char c : s.toCharArray()) {
if (c == ' ') {
chars[index++] = '%';
chars[index++] = '2';
chars[index++] = '0';
} else {
chars[index++] = c;
}
}
return String.valueOf(chars,0,index);
}
}
左旋转字符串
class Solution {
/*
*
* 题目:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。
* 请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
*
* 思路:子串拼接
*
* */
public String reverseLeftWords(String s, int n) {
return s.substring(n) + s.substring(0, n);
}
}