剑指Offer——替换空格

来源:互联网 发布:网络同步课堂 编辑:程序博客网 时间:2024/05/22 06:47

题目描述

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
编程思路:
public class 替换空格 {public static void main(String[] args) {StringBuffer sb = new StringBuffer("Hello World hao  zhong");System.out.println(sb);System.out.println(replaceSpace1(sb));System.out.println(replaceSpace2(sb));System.out.println(replaceSpace3(sb));System.out.println(replaceSpace4(sb));}//方法1:使用StringBuffer中的replace和insert方法public static String replaceSpace1(StringBuffer str) {for(int i = 0;i<str.length();i++){if(str.charAt(i)==' '){str.replace(i, i+1, "%");str.insert(i+1, "20");}        }return str.toString();}//方法2:使用Sting中的replaceAll方法(有正则表达式)   public static String replaceSpace2(StringBuffer str) {   return str.toString().replaceAll("\\s","%20");       // return str.toString().replaceAll(" ", "%20");    }    //方法3:使用StingBuffer中的append方法(有正则表达式)   public static String replaceSpace3(StringBuffer str) {           char[] strChar = str.toString().toCharArray();        StringBuffer stb = new StringBuffer();        for(int i=0;i<strChar.length;i++){            if(strChar[i]==' '){                stb.append("%20");            }else{                stb.append(strChar[i]);            }        }        return stb.toString();    }      //方法4:在创建一个扩充长度后的字符数组。   public static String replaceSpace4(StringBuffer str) {   int space_num = 0;   for(int i = 0;i<str.length();i++){   if(str.charAt(i) == ' ') space_num++;   }      char[] ch = new char[str.length()+2*space_num];    for(int i = 0,j = 0;i<str.length();){   if(str.charAt(i) == ' '){   ch[j++] = '%';   ch[j++] = '2';   ch[j++] = '0';   i++;   }else{   ch[j++] = str.charAt(i++);   }   }   return String.valueOf(ch);    }}

0 0
原创粉丝点击