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

题目:将字符数组中的空格使用“%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


巩固基础,勤加练习


你可能感兴趣的:(替换空格)