美文网首页算法
剑指offer problem 4:替换空格(java)

剑指offer problem 4:替换空格(java)

作者: vendettar | 来源:发表于2018-12-11 18:42 被阅读0次
    /**
     * 请实现一个函数,将字符串的每个空格替换为"%20"。
     * 例如输入"We are happy",则输出"We%20are%20happy."。
     * 要求在原有字符串上进行修改。
     *
     * 测试用例
     * 1.字符串中无空格
     *.2.字符串中含有空格(连续空格,空格在首尾等)
     *.3.字符串为空字符串或者为null
     *
     * 要求时间复杂度为O(n)
     */
    public class ReplaceBank {
    
        public static void main(String[] args) {
            StringBuffer str = new StringBuffer("we are happy.");
            System.out.println(replaceBank(str));
        }
    
        private static String replaceBank(StringBuffer str){
            if (str == null) {
                System.out.println("输入错误!");
                return null;
            }
            int length = str.length();
            //使用双指针,两个指针重叠时复制结束
            int indexOfOriginal = length - 1;//字符串原始长度的末尾指针
            for (int i = 0; i < str.length(); i++) {
                if (str.charAt(i) == ' ')
                    length += 2;
            }
            str.setLength(length);
            int indexOfNew = length-1;//字符串新长度的末尾指针
            while (indexOfNew > indexOfOriginal){
                if (str.charAt(indexOfOriginal) != ' '){
                    str.setCharAt(indexOfNew--,str.charAt(indexOfOriginal));
                }else {
                    str.setCharAt(indexOfNew--,'0');
                    str.setCharAt(indexOfNew--,'2');
                    str.setCharAt(indexOfNew--,'%');
                }
                indexOfOriginal--;
            }
            return str.toString();
        }
    }
    

    result:

    we%20are%20happy.
    

    相关文章

      网友评论

        本文标题:剑指offer problem 4:替换空格(java)

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