1. 程式人生 > 其它 >uni-app使用vant

uni-app使用vant

劍指 Offer 05. 替換空格

暴力

從前往後掃描,遇到一個空格就把陣列後面的字元向後移動,時間複雜O(n2),代價主要在後面字元需要多次移動

從後向前遍歷

先遍歷一次統計空格的個數,計算出最後字元的長度,從後往前遍歷,這樣之後移動後面的字元,字元不會被重複移動。

class Solution {
public:
    string replaceSpace(string s) {
        int count=0, length = s.size();
        int i=0;
        for(i=0;i<length;i++)
        {
            
if(s[i]==' ') { count++; } } int newlength= count*2+length; s.resize(newlength); int right=length-1,left=newlength-1; while(right < left && right >= 0) { if(s[right]==' ') { s[left
--]='0'; s[left--]='2'; s[left--]='%'; } else { s[left--]=s[right]; } right--; } return s; } };

c++裡面 string有個resize函式,可以改變陣列大小。

這種題目要注意是在原字串上進行修改,還是在新的字串上修改。

原字串修改的話,從前往後需要考慮多次的重複移動,而新的字串則不需要考慮,因為後面是空的,不用擔被覆蓋的問題。