力扣---面试题 01.03. URL化

发布时间 2023-03-28 18:40:39作者: Owlwu

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);
    }
}