zoukankan      html  css  js  c++  java
  • 替换空格

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

    题解:1、直接使用replaceAll也能通过,不过这种方案不是这个题目的目的

        2、使用从后向前遍历,另个指针

    链接:https://www.nowcoder.com/questionTerminal/4060ac7e3e404ad1a894ef3e17650423
    来源:牛客网

    在当前字符串替换,怎么替换才更有效率(不考虑java里现有的replace方法)。
          从前往后替换,后面的字符要不断往后移动,要多次移动,所以效率低下
          从后往前,先计算需要多少空间,然后从后往前移动,则每个字符只为移动一次,这样效率更高一点。
    public String replaceSpace(StringBuffer str) {
            int spaceNum = 0;
            for (int i = 0; i < str.length(); i++) {
                if(str.charAt(i)==' ') {   //使用单引号
                    spaceNum++;
                }
            }
            int oldIndex = str.length()-1;
            int newLength = str.length()+2*spaceNum;
            int newIndex = newLength-1;
            str.setLength(newLength);
            for (; oldIndex>=0; oldIndex--,newLength--) {
                if(str.charAt(oldIndex)==' ') {
                    str.setCharAt(newIndex--, '0');
                    str.setCharAt(newIndex--, '2');
                    str.setCharAt(newIndex--, '%');
                }else {
                    str.setCharAt(newIndex, str.charAt(oldIndex));
                }
            }
            return str.toString();
        }

    类似的题目:

    合并两个有序的数组AB:A有足够大的空间,将B添加到A中,并且保证添加后的数组仍然有序

  • 相关阅读:
    thinkphp 5 隐藏index.php
    jquery ajax参数
    图标字的使用方法
    jquery监听浏览宽度
    手机屏幕的宽度自动适应
    前站常用代码
    服务消费者(Feign-上)
    服务消费者(Ribbon)
    注册中心(Eureka/Consul)
    JDK8 日期格式化
  • 原文地址:https://www.cnblogs.com/Michael2397/p/8682980.html
Copyright © 2011-2022 走看看