剑指offer03--空格用%20替换

来源:互联网 发布:摩托车车架号网络查询 编辑:程序博客网 时间:2024/06/11 04:57

题目:将字符数组中的空格使用“%20”来进行替换

下面例子中,第一个直接使用的函数,比较简单。

第二个折腾了好长时间,原计划使用str.toCharArray()这个函数来进行处理的,无奈这个函数产生的字符数组的

大小是固定且不可改变的,所以只好放弃,先学习者,看看后面有没有什么好的方法再回头尝试。

package 剑指offer;/*题目:<替换空格>请实现一个函数,把字符串中的每个空格替换成"%20", * 例如“We are happy.”,则输出“We%20are%20happy.”。*//*public class Test04 {public static void main(String args[]){String str = "I love code";System.out.println(replaceBlank(str));}public static String replaceBlank(String str){String str1 = "%20";String str2 = str.replaceAll(" ",str1);return str2;}}*/// 我只能说上边的代码太投机的了,直接使用的库// 下面还是应该自己一点一点来实现我们的正则表达式了public class Test04 {public static void main(String args[]){ char[] string = new char[50];       string[0] = 'I';       string[1] = ' ';       string[2] = 'l';       string[3] = 'o';       string[4] = 'v';       string[5] = 'e';       string[6] = ' ';       string[7] = 'c';       string[8] = 'o';       string[9] = 'd';       string[10] = 'e';          int length = replaceBlank(string, 12);       System.out.println(new String(string, 0, length));   //String str = "I love code"; //char string[] = str.toCharArray();     //上面的这种方法看似可以,其实却是不行了,因为这个出来的数组string是固定的}public static int replaceBlank(char [] ary, int num){int blanknum = 0;// 统计空格的个数for(int i = 0; i < ary.length; i++){if(ary[i] == ' '){blanknum++;}}int allnum = blanknum*2 + num;// 获取总数目int temp = allnum;// 这个地方又是坑了我半天啊,最后直接返回的alltum了,但是alltum在过程中减少了num --;allnum--;    while (num >= 0 && num < allnum) {          // 如是当前字符是空白字符,进行"%20"替换          if (ary[num] == ' ') {              ary[allnum--] = '0';              ary[allnum--] = '2';            ary[allnum--] = '%';        } else { // 否则移动字符              ary[allnum--] = ary[num];          }          num--;    }     return temp;    //return allnum;}}
一定要注意返回的应该是temp,不是allnum


巩固基础,勤加练习


1 0