Description
Difficulty: Simple
请实现一个函数,把字符串 s
中的每个空格替换成”%20”。
示例 :
输入:s = “We are happy.”
输出:”We%20are%20happy.”
Solution - 1: replace
思路: 如题,直接用string里现成的replace(old value, new value)
内置函数即可
1 2 3 4 5
| class Solution { public String replaceSpace(String s) { return s.replace(" ", "%20"); } }
|
Solution - 2: 字符数组
思路: 由于java无法在原来的String上进行修改,我们可以建立一个新字符数组进行替换,由于每次替换从 1 个字符变成 3 个字符,新字符数组的长度为 s
的长度的 3 倍,这样可保证字符数组可以容纳所有替换后的字符。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class Solution { public String replaceSpace(String s) { int length = s.length(); char[] array = new char[length * 3]; int size = 0; for (int i = 0; i < length; i++) { char c = s.charAt(i); if (c == ' ') { array[size++] = '%'; array[size++] = '2'; array[size++] = '0'; } else { array[size++] = c; } } String newStr = new String(array, 0, size); return newStr; } }
|
1 2 3 4 5 6 7 8 9 10
| class Solution { public String replaceSpace(String s) { StringBuilder res = new StringBuilder(); for(Character c : s.toCharArray()) { res.append(c == ' ' ? "%20" : c); } return res.toString(); } }
|
Space complexity : O(3*n)
Time complexity : O(n)
Summary
- 使用内置replace函数进行替换是正常人第一的想法,但是肯定不是面试官要的。
总之希望自己能坚持下去,每周记录分享几道有趣的题和解法。也欢迎大家留言讨论补充(●’◡’●)