题目
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = "We are happy." 输出:"We%20are%20happy."
我的答案
class Solution { public String replaceSpace(String s) { StringBuffer str =new StringBuffer(); //System.out.println(s.charAt(0)); //System.out.println(s.length()); for(int i=0;i<=s.length()-1;i++){ if ((s.charAt(i))==' '){ str.append("%20"); } else{ str.append(s.charAt(i)); } } //System.out.println(str); return str.toString(); } }
优秀答案
不利用额外空间,在原地修改
public class Solution { public String replaceSpace(StringBuffer str) { int len1 = str.length() - 1; for(int i = 0; i <= len1; i++){ if(str.charAt(i) == ' '){ str.append(" "); } } int len2 = str.length() - 1; while(len2 > len1 && len1 >= 0){ char c = str.charAt(len1--); if(c == ' '){ str.setCharAt(len2--, '0'); str.setCharAt(len2--, '2'); str.setCharAt(len2--, '%'); }else{ str.setCharAt(len2--, c); } } return str.toString(); } }