算法-5.替换空格

2020-08-07  本文已影响0人  zzq_nene

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
思路:首先找到字符串中所有的字符数,遍历其中有多少个空格,然后重新构建字符串的字符数量,即一个空格字符要替换成三个字符;然后使用新的字符数量创建一个新的字符数组,通过遍历旧的字符数组,判断如果为空格,则给新的字符数组中设置三个字符,如果不是空格字符,则设置原先字符串的字符。

    public static String replaceSpace(String str) {
        int spaceCount = 0;
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == ' ') {
                spaceCount++;
            }
        }

        int newLength = str.length() + spaceCount * 2;
        char[] str2 = new char[newLength];
        for (int i = str.length() - 1; i > 0; i--) {
            if (str.charAt(i) == ' ') {
                str2[newLength - 1] = '0';
                str2[newLength - 2] = '2';
                str2[newLength - 3] = '%';
                newLength = newLength - 3;
            } else {
                str2[newLength - 1] = str.charAt(i);
                newLength = newLength - 1;
            }
        }
        return new String(str2);
    }
    public static String replaceSpace1(String str) {
        int spaceCount = 0;
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == ' ') {
                spaceCount++;
            }
        }

        int newLength = str.length() + spaceCount * 2;
        int cur = 0;
        char[] str2 = new char[newLength];
        for (int i = 0; i < str.length(); i++) {
            if (cur < newLength) {
                if (str.charAt(i) == ' ') {
                    // cur=2时,经过替换,变成三个字符
                    str2[cur] = '%';
                    str2[cur + 1] = '2';
                    str2[cur + 2] = '0';
                    // 所以下一次的cur使用的时候就得是5
                    cur = cur + 3;
                } else {
                    // cur = 0时,取出原字符串中的第0个字符
                    str2[cur] = str.charAt(i);
                    cur = cur + 1;
                }
            }
        }
        return new String(str2);
    }
上一篇 下一篇

猜你喜欢

热点阅读