剑指offer_数组---替换空格

来源:互联网 发布:windows功能哪些不能关 编辑:程序博客网 时间:2024/06/05 02:12

题目描述

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

解题思路

1,使用stringBuffer辅助解决
2,不使用辅助类,字符替换解决

代码实现

/** *  */package 字符串;/** * <p> * Title:ReplaceSpace * </p> * <p> * Description: * </p> *  * @author 田茂林 * @data 2017年8月23日 下午8:14:37 */public class ReplaceSpace {    // ============================================================使用辅助的StringBuffer    public String replaceSpace(StringBuffer str) {        char[] strs = str.toString().toCharArray();        StringBuffer s = new StringBuffer();        for (int i = 0; i < strs.length; i++) {            if (strs[i] != ' ')                s.append(strs[i]);            else {                s.append("%20");            }        }        return s.toString();    }    // ============================================================不使用辅助方案    public String replaceSpaceSuper(StringBuffer str) {        char[] strs = str.toString().toCharArray();        int count = 0;        // 统计出所有空格个数        for (int i = 0; i < strs.length; i++) {            if (strs[i] == ' ') {                count++;            }        }        //获取新字符串数组总长度        int len = 2 * count + strs.length;        char[] newstrs = new char[len];        int i = 0;        int j = 0;        //遇到空格就把字符替换进去        while (i < len && j < strs.length) {            if (strs[j] == ' ') {                newstrs[i++] = '%';                newstrs[i++] = '2';                newstrs[i++] = '0';                j++;            }else{                newstrs[i++] = strs[j++];            }        }        String s = new String(newstrs);        return s;    }    public static void main(String[] args) {        ReplaceSpace r = new ReplaceSpace();        StringBuffer str = new StringBuffer("We Are Happy");        System.out.println(r.replaceSpace(str));        System.out.println(r.replaceSpaceSuper(str));    }}
原创粉丝点击