uni-app使用vant
阿新 • • 發佈:2021-10-16
暴力
從前往後掃描,遇到一個空格就把陣列後面的字元向後移動,時間複雜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函式,可以改變陣列大小。
這種題目要注意是在原字串上進行修改,還是在新的字串上修改。