题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
题解
1、最简单的解题方法。(声明一个新的StringBuffer str,遍历原来的字符串一次添加到str中)
public String replaceSpace(StringBuffer str) { StringBuffer newStr = new StringBuffer(); for(int i = 0; i < str.length(); i++) { if(str.charAt(i) == ' ') newStr.append("%20"); else newStr.append(str.charAt(i)); } return newStr.toString(); }
2、在原来的字符串上移动字符。(从后向前移动。先遍历空格个数,设置字符串的长度,从后向前遍历移动字符串)
public String replaceSpace(StringBuffer str) { int spaceNum = 0; for(int i = 0; i < str.length(); i ++) { if(str.charAt(i) == ' ') spaceNum++; } int oldLength = str.length(); int newLength = str.length() + spaceNum * 2; str.setLength(newLength); while(newLength > 0 && oldLength > 0) { if(str.charAt(--oldLength) == ' ') { str.setCharAt(--newLength,'0'); str.setCharAt(--newLength,'2'); str.setCharAt(--newLength,'%'); } else str.setCharAt(--newLength,str.charAt(oldLength)); } return str.toString(); }
参考题解:https://www.nowcoder.com/profile/980167/codeBookDetail?submissionId=1523034