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

     题目:

    思路:

    1. 申请一个较大的缓存依次缓存源字符串中非空格元素,遇到空格就替换 然后将缓存中的字符串考回原数组,进行输出

    2. 将空格替换成%20时,每个空格变成了3个字符,整个字符串的长度就会改变。len = len + 2*空格。

    方法:

    1. 从前往后替换(O(n^2),每遇空格,整个串都要移动一次)

    2. 从后往前替换 (O(n), 这种方法更优一点)。推荐

    3. 利用java自带的replace覆盖原字符串(也复杂) 

    方法2:

    class Solution {
    public:
    void replaceSpace(char *str,int length) {
            //遍历一边字符串找出空格的数量
            if(str==NULL||length<0)
                return ;
            int i=0;
            int oldnumber=0;//记录以前的长度
            int replacenumber=0;//记录空格的数量
            while(str[i]!='')
                {
                   oldnumber++;
                   if(str[i]==' ')
                       {
                         replacenumber++;
                       }
                      i++; 
                }
            int newlength=oldnumber+replacenumber*2;//插入后的长度
            if(newlength>length)//如果计算后的长度大于总长度就无法插入
                return ;
            int pOldlength=oldnumber; //注意不要减一因为隐藏个‘’也要算里
            int pNewlength=newlength;
            while(pOldlength>=0&&pNewlength>pOldlength)//放字符
                {
                  if(str[pOldlength]==' ') //碰到空格就替换
                      {
                         str[pNewlength--]='0';
                         str[pNewlength--]='2';
                         str[pNewlength--]='%';
                         
                      }
                   else //不是空格就把pOldlength指向的字符装入pNewlength指向的位置
                   {
                        str[pNewlength--]=str[pOldlength];
                       
                   }
                 pOldlength--; //不管是if还是elsr都要把pOldlength前移
                 
               }
            
    
    }
    };

    方法3:

    public class Solution {
        public String replaceSpace(StringBuffer str) {
            String s = new String(str); //toString方法操作的是对象,所以需要使用包装类。
            return s.toString().replaceAll(" ", "%20");
        }
    }
  • 相关阅读:
    Leetcode Minimum Path Sum
    Leetcode House Robber II
    洛谷 P5375 【[THUPC2019]组合数据结构问题】题解
    洛谷 P1855 【榨取kkksc03】题解
    CF1173A 【Nauuo and Votes】题解
    [NOIP2018D1T1][NOIP2013D1T1][Luogu P5019]铺设道路 题解
    [BZOJ1083][SCOI2005]繁忙的都市 题解
    统计自己洛谷AC题目爬虫
    CF43A Football 题解
    SP2 PRIME1
  • 原文地址:https://www.cnblogs.com/msymm/p/9929896.html
Copyright © 2011-2022 走看看