演算法學習記錄二(C++)--->字串空格替換
描述
- 請實現一個函式,將一個字串中的空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。
思路
問題1:在原來的字串上進行替換
問題2:從前往後替換,後面的字元要不斷往後移動,要多次移動,所以效率低下
結論:在原來的字串上進行替換,而且從後往前,先計算出需要多少空間,然後從後往前移動,每個字串移動一次,這樣效率更高一點
C++實現
class Solution {
public:
void replaceSpace(char *str,int length) {
if(str == NULL || length <= 0) return;
int origin_l = 0;
int space_count = 0;
// 計算出空格的個數
for(int i = 0;str[i]!='\0';i++){
origin_l++;
if(str[i] == ' '){
space_count++;
}
}
// 重新替換後的字串長度 這裡*2是空格替換三個字元
int new_l = origin_l + 2*space_count;
// 從後往前替換
for(int j=origin_l;j>=0&&new_l>j;j--){
if(str[j] == ' '){
str[new_l] = '0';
new_l--;
str[new_l] = '2';
new_l--;
str[new_l] = '%';
}
else{
str[new_l] = str[j];
}
new_l--;
}
}
};
相關文章
- 替換字串中的空格《演算法很美》字串演算法
- 替換空格 將一個字串中的空格替換成“ ”字串
- Problem 4:替換空格(字串)字串
- js替換字串裡的空格JS字串
- C++ 中的替換空格C++
- 劍指offer-字串空格替換為“ ”字串
- 【劍指offer】替換字串中的空格字串
- 演算法學習記錄十四(C++)--->二叉樹的映象演算法C++二叉樹
- 第五章 字串專題 ---------------- 5.4 實踐:替換字串中的空格字串
- c++學習記錄C++
- javascript將字串中的多個空格替換為一個空格的正則例項JavaScript字串
- 演算法學習記錄一(C++)--->二維陣列中的查詢演算法C++陣列
- C/C++學習筆記:字串C++筆記字串
- C++學習記錄1C++
- sed 字串替換字串
- ACM 字串替換ACM字串
- 演算法學習記錄九(C++)--->二進位制中1的個數演算法C++
- 正則替換 修改字元 去除空格字元
- Vue 學習記錄二Vue
- 面向深度學習的快取替換演算法深度學習快取演算法
- 《從零開始學Swift》學習筆記(Day 14)——字串的插入、刪除和替換Swift筆記字串
- Java學習筆記記錄(二)Java筆記
- vi替換字串(zz)字串
- POJ 3981 字串替換字串
- [每日一題] 第十題:替換空格每日一題
- Java openrasp學習記錄(二)Java
- day 1 c++小白學習記錄C++
- js replace替換字串,同時替換多個方法JS字串
- js中字串的替換JS字串
- js中字串全部替換JS字串
- Linux vi替換字串Linux字串
- 字串查詢和替換字串
- Vi中的替換字串字串
- mysql批量替換指定字串MySql字串
- 演算法學習記錄十二(C++)--->連結串列題目集合演算法C++
- 演算法學習記錄十(C++)--->數值的整數次方演算法C++
- 演算法學習記錄四(C++)--->通過前序和中序序列重建二叉樹演算法C++二叉樹
- C++學習筆記(二)——函式C++筆記函式