剑指Offer面试题5 替换空格

2018-11-14  本文已影响0人  Yue_Q

题目描述

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

//先计算数组大小,从后往前赋值
public class Solution {
    public String replaceSpace(StringBuffer str) {
         int strLen = str.length();
        if (strLen ==0) return "";
        int speaceNum = 0;

        for (int i=0 ; i<strLen ;i++)
        {
            if(str.charAt(i) == ' '){
                speaceNum++;
            }
        }

        int newStrLength = strLen +  speaceNum * 2;//计算新数组长度
        str.setLength(newStrLength);
        int p1 = strLen - 1;    //下标从0开始,指向老数组的指针
        int p2 = newStrLength -1;    //下标从0开始,指向新数组的指针

        while (p1!=p2)//如果指针相遇,则完成
        {
            if(str.charAt(p1)!=' '){
                str.setCharAt(p2,str.charAt(p1));// 新指针位置赋值
                p2--;
            }else{// 赋值 %20
                str.setCharAt(p2--,'0');
                str.setCharAt(p2--,'2');
                str.setCharAt(p2--,'%');
            }
            p1--;
        }
      
        return str.toString();
    }
}
上一篇下一篇

猜你喜欢

热点阅读