請實現一個函數,將一個字符串中的空格替換成“%20”。例如,當字符串為We Are Happy.則經過替換之后的字符串為We%20Are%20Happy。
方法一:不使用新字符串
1.計算空字符串的個數
2.設置老子字符串的長度為替換空格后的字符串長度
3.從右邊開始替換字符串,如果從左邊開始替換的話每個字符串要移動多次,從右邊開始只需要移動一次更效率
public class Solution {
public String replaceSpace(StringBuffer str) {
int spaceNum = 0;
for(int i = 0;i<str.length();i++)
{
if(str.charAt(i)==' ')
spaceNum++;
}
int oldIndex = str.length() - 1;
int newLength = str.length() + spaceNum*2;
int newIndex = newLength - 1;
str.setLength(newLength);
for(;oldIndex>=0;oldIndex--){
if(str.charAt(oldIndex)==' '){
str.setCharAt(newIndex--,'0');
str.setCharAt(newIndex--,'2');
str.setCharAt(newIndex--,'%');
}else{
str.setCharAt(newIndex--,str.charAt(oldIndex));
}
}
return str.toString();
}
}
方法二:使用新字符串
1.新建一個字符串
2.遍歷老字符串的每一個字符,如果字符為空字符串,新字符串拼接“%20”,否則拼接字符
public class Solution {
public String replaceSpace(StringBuffer str) {
String string = str.toString();
char[] charArray = string.toCharArray();
StringBuffer newStr = new StringBuffer();
for(int i = 0;i<str.length();i++){
if(charArray[i] == ' '){
newStr.append("%20");
}else{
newStr.append(charArray[i]);
}
}
return newStr.toString();
}
}