剑指-替换空格

来源:互联网 发布:欧洲难民感恩 知乎 编辑:程序博客网 时间:2024/06/14 02:41

题目:
请实现一个函数,把数组中的每个空格替换成%20,例如:输入bie zhi hua,则输出bie%20zhi%20hua

算法思路:
先遍历一次字符串,统计出字符数组中空格数量,并计算出替换后的总长度。
然后,从字符数组末尾开始复制和替换。由于所有的字符只移动一次,所以这个算法的时间效率为O(n)

public static void main(String[] args) {    char[] str = {'b', 'i', 'e', ' ', 'z', 'h', 'i', ' ', 'h', 'u', 'a'};    char[] newStr = replaceBlack(str);    System.out.println(newStr);}private static char[] replaceBlack(char[] str) {    int blackCount = 0;    for (int i = 0; i < str.length; i++) {        if (str[i] == ' ') {            blackCount++;        }    }    int originLength = str.length;    int newLength = str.length + blackCount * 2;    char[] newStr = new char[newLength];    int indexOrigin = originLength - 1;    int indexNew = newLength - 1;    while (indexOrigin >= 0 && indexNew >= 0) {        if (str[indexOrigin] == ' ') {            newStr[indexNew--] = '0';            newStr[indexNew--] = '2';            newStr[indexNew--] = '%';        } else {            newStr[indexNew--] = str[indexOrigin];        }        indexOrigin--;    }    return newStr;}
0 0
原创粉丝点击