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

    时间限制:1秒 空间限制:32768K 热度指数:938460
    本题知识点: 字符串

     算法知识视频讲解

    题目描述

    请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
     
    解题思路有两个:
    1. 从前向后替换,这样的话每找到一个空格,都会将空格后的所有字符向后移动2个距离,这样的话计算量比较大,算法的复杂性大,我自己就使用的这种方法。而且,由于很久没有练习算法题,所以一开始直接str[i] = "%20",忘记一个字符不能用字符串来替代。
    2. class Solution {
      public:
          void replaceSpace(char *str,int length) {
              
              for(int i = 0; i < length-1;){
                  if(str[i] == ' '){
                      for(int j = length - 1; j > i; j--){
                          str[j+2] = str[j];
                      }
                   str[i] = '%';
                   str[i+1] = '2';
                   str[i+2] = '0';
                   i = i + 3;
                      
                  }
                  else{
                      i++;
                  }
      
              }
      
          }
      };
    3. 标准的简单方法是,所有的字符只需要移动一次即可。即首先从前向后记录一下空格的个数。然后从后向前进行空格的替换,这样的话就可以每个字符只移动一次,与第一种方法相比降低了计算复杂度。
      链接:https://www.nowcoder.com/questionTerminal/4060ac7e3e404ad1a894ef3e17650423
      来源:牛客网
      
      class Solution {
      public:
          void replaceSpace(char *str,int length) {
              int count=0;
              for(int i=0;i<length;i++){
                  if(str[i]==' ')
                      count++;
              }
              for(int i=length-1;i>=0;i--){
                  if(str[i]!=' '){
                      str[i+2*count]=str[i];
                  }
                  else{
                      count--;
                      str[i+2*count]='%';
                      str[i+2*count+1]='2';
                      str[i+2*count+2]='0';
                  }
              }
          }
      };
  • 相关阅读:
    图片加载框架之Glide和Picasso
    图片加载框架之fresco
    图片加载框架之ImageLoader
    依赖注入框架之androidannotations
    依赖注入框架之butterknife
    Android依赖注入框架之Dagger2
    EvenBus源码分析
    时间总线框架之EvenBus
    数据库开源框架之litepal
    数据库开源框架之sqlcipher加密数据库
  • 原文地址:https://www.cnblogs.com/superjn/p/10734741.html
Copyright © 2011-2022 走看看