剑指offer(二)—— 替换空格

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

问题分析:对字符串从前往后单个字符遍历,遇到空格,将字符串截断成前后两段,并使用String类的trim()方法将后一段的字符串两头空格去除,再将其拼接后,后移三位继续遍历。

测试
输入一个字符串:We Are Happy(每一个空皆有两个空格)
过程如图:

辅助图注释
蓝色背景:需要替换成的字符串
箭头:指向需要替换的位置

这里写图片描述

下面给出代码实现:

package com.java.question;

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

    /**
     * 将空格替换成"%20"
     * @param str
     * @return
     */
    public static String replaceSpace(StringBuffer str) {
        StringBuffer sb=null;
        int i=0;
        while(i<str.length()){
            if(str.charAt(i)==' '){
                sb=new StringBuffer();
                String s_front=str.substring(0, i);
                String s_rear=str.substring(i+1, str.length()).trim();
                sb.append(s_front+"%20");
                sb.append(s_rear);
                str=sb;
                i+=3;
            }else{
                i++;
            }
        }
        return str.toString();
    }

    /**
     * 测试
     * @param args
     */
    public static void main(String[] args) {
        StringBuffer sb=new StringBuffer("We  Are  Happy");
        System.out.println(replaceSpace(sb));
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章