/*请实现一个函数,把字符串 s 中的每个空格替换成"%20"。*/
/**
* 1.在原有的字符串上进行替换
* 2.创建新字符串进行替换
*/
package sword;
/**
* @author PangWanjia
* @date 2021/3/25 20:21
*/
public class test05 {
//在原有的空间上替换,先遍历计算空格数量,得到需扩展的数组大小。然后从后向前移动。
public static StringBuffer replaceSpace(StringBuffer s){
//考虑异常情况
if (s == null) return null;
int num = 0;
int k = s.length(); //要先记一下字符串大小,在for循环中改变了
//根据空格数量扩充字符串大小
for(int i = 0;i < k;i++){
if(s.charAt(i) == ' '){
num++;
}
}
s.setLength(s.length()+num*2);
//移动元素
int j = s.length() - 1; //指向扩充后的字符串最后一项
for(int i = k - 1;i >= 0;i--){
if(s.charAt(i) != ' ') s.setCharAt(j--,s.charAt(i)); //若非空格,复制到j指针处
else{
s.setCharAt(j--,'0');
s.setCharAt(j--,'2');
s.setCharAt(j--,'%');
}
}
return s;
}
//创建新空间
public static String replaceSpace2(String s) {
String temp = "";
for(int i = 0;i<s.length();i++){
if(s.charAt(i) == ' ') temp = temp + "%20";
else temp = temp + s.charAt(i);
}
return temp;
}
public static void main(String[] args) {
String s1 = "We are happy.";
StringBuffer s = new StringBuffer("We are happy.");
System.out.println(s);
System.out.println(replaceSpace2(s1));
System.out.println(replaceSpace(s));
}
}
算法很简单,但是JAVA修改String太麻烦了……

1142

被折叠的 条评论
为什么被折叠?



