剑指 Offer 05. 替换空格
题目来源:剑指 Offer 05
题目链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/
题目描述
请实现一个函数,把字符串 s
中的每个空格替换成”%20
“。
示例 1:
1 2
| 输入:s = "We are happy." 输出:"We%20are%20happy."
|
限制:
0 <= s 的长度 <= 10000
问题分析
示例代码
正则表达式
1 2 3
| public String replaceSpace(String s) { return s.replaceAll("\\s","%20"); }
|
执行结果:
JAVAAPI
1 2 3 4 5 6 7 8 9 10 11 12
| public String replaceSpace(String s) { StringBuilder builder = new StringBuilder(); for(int i =0;i<s.length();i++){ char ch = s.charAt(i); if(String.valueOf(ch).equals(" ")){ builder.append("%20"); }else{ builder.append(ch); } } return builder.toString(); }
|
执行结果:
双指针
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public String replaceSpace(String s){ if(s == null || s.length() == 0) return s; char [] arr = s.toCharArray(); int numOfBlank = 0; for(char c : arr) if(c == ' ') numOfBlank++; char[] arrNew = new char[arr.length+numOfBlank*2]; for(int i =0 ;i<arr.length;i++) arrNew[i] = arr[i]; int p1 = arr.length-1; int p2 = arrNew.length-1; for(;p1!=p2;){ if(arrNew[p1] != ' '){ arrNew[p2--] = arrNew[p1--]; }else{ p1--; arrNew[p2--] = '0'; arrNew[p2--] = '2'; arrNew[p2--] = '%'; } } return String.valueOf(arrNew); }
|
执行结果: