其他算法-002-替換空格

題目描述

請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy

分析

  • 思路一:從頭到尾遍歷字符串做替換,時間複雜度爲O(n2),效率低。
    在這裏插入圖片描述

  • 思路二:從尾到頭遍歷字符串做替換,時間複雜度爲O(n),效率高。
    在這裏插入圖片描述

  • 利用python str內置`方法,簡易解決。時空複雜度不是最優。

代碼

// C++
class Solution {
public:
    // 指向字符數組的字符指針str,字符數組長度length
	void replaceSpace(char *str,int length) {

        // 邊界檢查1:判斷字符數組是否爲空
	    if(str==NULL)
            return ;
        // 遍歷字符串,統計空格個數、替換前字符個數、替換後字符個數
        int CountOfBlanks=0; // 空格個數
        int Originallength=0;// 替換前字符個數
        int len=0;           // 替換後字符個數

        for(int i=0;str[i]!='\0';++i)
        {
            Originallength++;
            if(str[i]==' ')
                ++CountOfBlanks;
        }

        len =Originallength+2*CountOfBlanks;

        // 邊界檢查2:判斷字符數組是否越界
        if(len+1>length)
             return ;

        // 替換空格
        char*pStr1=str+Originallength;// 字符指針指向原始字符串的末尾
        char*pStr2=str+len;           // 字符指針指向替換後字符串的末尾

        while(pStr1 != pStr2)         // 替換結束的條件
        {
            if(*pStr1==' ')
            {
                *pStr2--='0';
                *pStr2--='2';
                *pStr2--='%';
            }
            else
            {
                *pStr2--=*pStr1;
            }
            --pStr1;
        }
	}
};
# python
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        return '%20'.join(s.split(' '))
        #return s.replace(' ', '%20')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章