码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer二:替换空格

时间:2016-12-03 01:05:51      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:技术分享   pac   解题思路   ++   移动   turn   off   ace   dex   

题目描述:

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

解题思路:

本题中需要注意,新的字符串的长度要比旧的字符串长度长,这意味着,从前往后替换的话,每更换一次,后面的字符就要向后移动。因此,在替换的过程中需要考虑到时间复杂度和空间复杂度的问题。

 

public class Solution {
    public String replaceSpace(StringBuffer str) {
        int spaceNum = 0;
        //1.先计算出字符串中的空格数
        for(int i = 0; i < str.length(); i ++){
            if(str.charAt(i) == ‘ ‘){
                spaceNum ++;
            }
        }
        
        //旧数组下标
        int indexold = str.length() -1;
        //新数组下标
        int indexnew = str.length() + 2*spaceNum -1;
        int index = indexnew;
        String str1 = "";
        //定义新的数组
        char[] strArr = new char[indexnew+1];
        for(int j = indexold; j >= 0; j --){
            if(str.charAt(j) != ‘ ‘){
                strArr[index] = str.charAt(j);
                index--;
            }else{
                strArr[index] = ‘0‘;
                strArr[index-1] = ‘2‘;
                strArr[index-2] = ‘%‘;
                index-=3;
            }
        }
       // strArr[0] = str.charAt(0);
        //将字符数组转变为String
        for(int k = 0; k < strArr.length; k++){
            str1+=strArr[k];
        }
        return str1;
    }
}

测试结果:

技术分享

 

剑指offer二:替换空格

标签:技术分享   pac   解题思路   ++   移动   turn   off   ace   dex   

原文地址:http://www.cnblogs.com/lfdingye/p/6127448.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!