美文网首页
剑指Offer面试题5 替换空格

剑指Offer面试题5 替换空格

作者: Yue_Q | 来源:发表于2018-11-14 11:32 被阅读0次

    题目描述

    请实现一个函数,将一个字符串中的每个空格替换成“%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();
        }
    }
    

    相关文章

      网友评论

          本文标题:剑指Offer面试题5 替换空格

          本文链接:https://www.haomeiwen.com/subject/rfidfqtx.html