替字串中的換空格 C 實現

2021-10-04 15:37:43 字數 1608 閱讀 1250

時間複雜度為o(n^2)的解法

思路:從頭到尾掃瞄字串,每一次碰到空格字元的時候做替換,即把1個字元替換成3個字元;我們必須要把空格後面所有的字元向後移動兩個位元組,否則就有兩個字元被覆蓋了。

基於如上思路,**實現如下:

void solution::replacespace1(char *str, int len)

int index = 0;

while(str[index] != '\0')

str[index]='%';

str[index+1]='2';

str[index+2]='0';

} index++;

} return ;

}

時間複雜度為o(n)的解法:

思路:先遍歷一遍,統計空格總數與替換前字串總長度,並由此計算出替換後字串的總長度。新長度 = 舊長度+2*空格數。然後我們從字串的後面開始複製和替換,準備兩個指標p1和p2。分別指向替換前字串的末尾和替換後字串的末尾;接下來我們向前移動p1,逐個把它指向的字元複製到p2指向的位置,直到碰到空格,進行替換。p1和p2重合為止。**實現如下:

void solution::replacespace2(char *str, int len)

strlenthnew = strlenthold + spacenum*2;

if(strlenthnew > len)

return;

while(strlenthold>0 && strlenthnew>strlenthold)

else

}return ;

}

完整**實現如下:
#include "string.h"

class solution

;solution::solution()

{}solution::~solution()

void solution::replacespace1(char *str, int len)

int index = 0;

while(str[index] != '\0')

str[index]='%';

str[index+1]='2';

str[index+2]='0';

} index++;

} return ;

}void solution::replacespace2(char *str, int len)

strlenthnew = strlenthold + spacenum*2;

if(strlenthnew > len)

return;

while(strlenthold>0 && strlenthnew>strlenthold)

else

}return ;

}int main()

; char str2[100] = ;

solution otest;

otest.replacespace1(str1, 100);

otest.replacespace2(str2, 100);

return 0;

}

字串空格替換 C實現

題目 輸入乙個字串和待替換的字串,將字串中的空格替換成待替換的字串。程式分析 1 查詢空格時,從前往後查詢。2 替換空格時,先計算需要多少空間,然後從後往前移動,則每個字元只為移動一次,這樣效率更高一點。c define crt secure no warnings include void rep...

去除字串中的空格 C

思路 不開闢新空間,直接在字串上直接進行操作,把空格用後面的字串填充。解法 除陣列名本身這個指標外,只需建立乙個指標來指向空格後面的字元,將字元賦給空格後,原字元所在位置置為空格,兩個指標同時向後移動一步,繼續迴圈直到 指向字元的指標移動到陣列末尾 即指標指向的值為 0 為止。實現 include ...

用c 實現類似vb的replace字串替換

用過vb的朋友都知道,vb裡的replace很好用,貌似c 裡沒有乙個現成的函式實現這個功能 mfc裡的cstring除外 那麼我們來自己寫 實現功能吧.c 實現如下 include include using namespace std string replace string a,string...