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

    题目描述

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

    思路: 预先计算出替换后的字符串的长度, 然后从后向前复制

    版本一: 没做出来, 参考书上解题思路

    class Solution {
    public:
    	void replaceSpace(char *str,int length) {
                    int numBef = 0;
            int numAft = 0;
            int numBank = 0;
            int i = 0;
    
            while ('' != str[i]) {
                numBef++;
                if (' ' == str[i]) {
                    numBank++;
                }
                i++;
            }
    
            numBef += 1;
            numAft = numBef + numBank * 2;
    
            while (0 <= numBef) {
                if (' ' == str[numBef]) {
                    str[numAft] = '0';
                    str[numAft - 1] = '2';
                    str[numAft - 2] = '%';
                    numBef--;
                    numAft -= 3;
                    continue;
                }
                str[numAft] = str[numBef];
                numBef--;
                numAft--;
            }
    	}
    };
    

    版二: 书上改了不点不点

    class Solution {
    public:
    	void replaceSpace(char *str,int length) {
            if ((NULL == str) || (0 == length)) {
                return;
            }
            
            int originalLength = 0;
            int numberOfBank = 0;
            int i = 0;
            while ('' != str[i]) {
                if (' ' == str[i]) {
                    numberOfBank++;
                }
                originalLength++;
                i++;
            }
            
            int newLength = originalLength + numberOfBank * 2;
            
            if (newLength > length) {
                return;
            }
            
            int oldIndex = originalLength;
            int newIndex = newLength;
            
            while((oldIndex >= 0) && (newIndex > oldIndex)) {
                if (' ' == str[oldIndex]) {
                    str[newIndex--] = '0';
                    str[newIndex--] = '2';
                    str[newIndex--] = '%';
                }
                else {
                    str[newIndex--] = str[oldIndex];
                }
                oldIndex--;
            }
    	}
    };
    
  • 相关阅读:
    Outlook 邮件助手
    飞花令
    青蛙跳台阶
    如何提问,找到去说谎国的路
    如何计时一个小时十五分钟
    旋转数组的最小元素
    谁养鱼?
    小龙赚了多少?
    下一行是什么?
    5 = ?
  • 原文地址:https://www.cnblogs.com/hesper/p/10409790.html
Copyright © 2011-2022 走看看