URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)
示例 1:
输入:"Mr John Smith ", 13
输出:"Mr%20John%20Smith"
示例 2:
输入:" ", 5
输出:"%20%20%20%20%20"
提示:
字符串长度在 [0, 500000] 范围内。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/string-to-url-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目有点绕,简单点来说就是让你不构建新的字符串,而直接在原字符串上修改。另外,由于Java语言String字符串不可改变的特点,所以需要你利用String类的toCharArray()方法,然后在这个字符数组中进行操作。
题目已经给出了足够的空格(大于等于需要的空格,所以这里会有一个坑,即给的空格大于需要的空格,此时只需要在答案中进行截断处理即可(见注释))。
通过双指针即可。
class Solution { public String replaceSpaces(String S, int length) { char[] arr = S.toCharArray(); int i = length - 1; int j = arr.length - 1; while (i >= 0) { if (arr[i] == ' ') { arr[j --] = '0'; arr[j --] = '2'; arr[j --] = '%'; } else { arr[j --] = arr[i]; } i --; } // 面对给出的空格太多时,进行截断处理。 return String.valueOf(arr, j + 1, arr.length - j - 1); } }