劍指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));
    }

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