领扣LintCode算法问题答案-212. 空格替换

领扣LintCode算法问题答案-212. 空格替换

目录

  • 212. 空格替换
  • 鸣谢

212. 空格替换

设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。

你的程序还需要返回被替换后的字符串的长度。

样例 1:

输入:string[] = “Mr John Smith” and length = 13
输出:string[] = “Mr%20John%20Smith” and return 17
解释:
对于字符串 “Mr John Smith”,长度为 13。替换空格之后,参数中的字符串需要变为 “Mr%20John%20Smith”,并且把新长度 17 作为结果返回。

样例 2:

输入:string[] = “LintCode and Jiuzhang” and length = 21
输出:string[] = “LintCode%20and%20Jiuzhang” and return 25
解释:
对于字符串 “LintCode and Jiuzhang”,长度为 21。替换空格之后,参数中的字符串需要变为 “LintCode%20and%20Jiuzhang”,并且把新长度 25 作为结果返回。

public class Solution {
     
    /*
     * @param string: An array of Char
     * @param length: The true length of the string
     * @return: The true length of new string
     */
    public int replaceBlank(char[] string, int length) {
     
        // write your code here
        if (string == null) {
     
            return 0;
        }
        int newLength = length;
        for (int i = length; i >= 0; i--) {
     
            char c = string[i];
            if (c == ' ') {
     
                replaceBlank(string, i, newLength - 1);
                newLength += 2;
            }
        }
        return newLength;
    }
    
    private void replaceBlank(char[] string, int index, int endIndex) {
     
        for (int i = endIndex + 2; i > index + 2; i--) {
     
            string[i] = string[i-2];
        }
        string[index] = '%';
        string[index + 1] = '2';
        string[index + 2] = '0';
    }
}

原题链接点这里

鸣谢

非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。
欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。

你可能感兴趣的:(算法,算法)