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

    题目描述

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

    思路:恩。人生苦短,我用python。

    python实现:

    1 # -*- coding:utf-8 -*-
    2 class Solution:
    3     # s 源字符串
    4     def replaceSpace(self, s):
    5         # write code here
    6         return "%20".join(s.split(" "))

    C++实现:

    如果从头开始扫描,那么每遇到一个空格,都要将后面的字符往后移两位,最终时间复杂度O(n2),因此可以从串尾开始扫描。

     1 class Solution {
     2 public:
     3     void replaceSpace(char *str,int length) {
     4         //sOldLength记录origin string的长度,sNum记录空格个数。
     5         int sOldLength = 0, sNum = 0, i = 0;
     6         while (str[i] != '') {
     7             sOldLength++;
     8             if (str[i] == ' ') {
     9                 sNum++;
    10             }
    11             i++;
    12         }
    13         //sNewLength表示新串的长度 - 1
    14         int sNewLength = sOldLength + 2 * sNum;
    15         if (sNewLength >= length)
    16             return;
    17         while (sOldLength >= 0 && sNewLength > sOldLength) {
    18             if (str[sOldLength] == ' ') {
    19                 str[sNewLength--] = '0';
    20                 str[sNewLength--] = '2';
    21                 str[sNewLength--] = '%';
    22             } else {
    23                 str[sNewLength--] = str[sOldLength];
    24             }
    25             sOldLength--;
    26         }
    27     }

     合并两个排序的数组(或者字符串),如果从前往后复制每个数字需要重复移动数字(字符)多次,我们可以考虑从后往前复制。

  • 相关阅读:
    兼容性和工程化
    对象
    用JavaScript实现学生管理系统
    用JavaScript实现视频弹幕发送
    数据结构
    数据结构和函数
    JavaScript的基本语法
    JS概括及基本语法
    MongoDB数据库的简单安装与使用
    epxress 的安装与配置
  • 原文地址:https://www.cnblogs.com/qinduanyinghua/p/10642415.html
Copyright © 2011-2022 走看看