Java代码实现替换空格
剑指Offer-替换空格
题目: 实现一个函数,把字符串中的每一个空格替换为"%20"。 背景: 在URL中存在一些特殊字符,如空格、#等,我们需要把这些特殊字符转换为服务器所能识别的字符,转换的规则为在%后加上ASCII码的两位十六进制的表示。 思路如下
如果每一次发现一个空格就在这个空格的位置插入一个%20的话,考虑不覆盖后边的字符的情况下,就要将后边的进行后移,而如果中间穿插多个空格就会导致部分字符串进行多次后移,这样肯定不是最让人满意的答案。在允许自己分配足够的内存的情况下,因为一个空格替换需要多出来两个长度,则分配一个丁长发的新字符串,再逐次重新写新字符串
public static String replaceSpace(String str){ if (null == str || str.isEmpty()) return null; int le = str.length(); char[] chars = str.toCharArray(); //计算空格的数量 int spaceCount = 0; for (char c : chars) { if (c == ){ spaceCount ++; } } if (spaceCount == 0) return str; int newLe = le+spaceCount*2; char[] newChar = new char[newLe]; int p2 = newLe - 1; for (int i = chars.length - 1; i >= 0; i--) { if ( != chars[i]){ newChar[p2--] = chars[i]; }else{ newChar[p2--] = 0; newChar[p2--] = 2; newChar[p2--] = %; } } return new String(newChar); }
测试