字串的替換(三種情況)

2021-09-26 03:55:23 字數 801 閱讀 9457

1.乙個換乙個

例:函式將字串中的字元 』 * 』 到 字串的前部分,前面的非 』 * 』 字元後移,但不能改變非 』 * 』 字元的先後順序,函式返回串中非 』 * 』 字元的數量。(要求盡可能的占用少的時間和輔助空間)。

如:原始串為au** toc ** h**i* ps,處理後為*******autochips,函式返回9.

//將字串中的*移到最前面,其它字元相對順序不變

#includevoid move(char *str)//o(n),o(1)

} while( j >= 0)

}

2.乙個換多個(插入)

將空格替換成%20,見《劍指offer>例題4

//將空格替換成"%20"

void blank(char *str)//o(n),o(1)

} j = i+count*2;//

for(;i>=0;i--)

else //是空格,需要替換為%20

}}

3.多個換乙個(刪除)

將字串中連續的空格刪除,只保留乙個空格(此處#代表空格)

「#a#b##c####d」->「a#b#c#d」

//刪除多餘空格,連續空格只保留乙個

void delblank(char *str)//o(n),o(1)

else // 不是連續空格

}str[j] = '\0';

}

js字串擷取三種

slice 第乙個引數代表開始位置,第二個引數代表結束位置的下乙個位置,擷取出來的字串的長度為第二個引數與第乙個引數之間的差 若引數值為負數,則將該值加上字串長度後轉為正值 若第乙個引數等於大於第二個引數,則返回空字串.substring 第乙個引數代表開始位置,第二個引數代表結束位置的下乙個位置 ...

左旋字串的三種實現

左旋字串是許多公司面試官喜歡問到的問題,那麼這片博文就是要講一下左旋字串的實現以及 劍指offer 裡面是怎樣解決這個問題。一.先看看一道面試題 eg 輸入乙個英語句子,翻轉句子中單詞的順序,但單詞內字元額順序不變。為了簡單起見,標點符號和普通字母一樣處理。例如輸入字串 i am a student...

左旋字串的三種演算法

abcd1234 左旋4個字元 1234abcd 方法一 迴圈移動 這裡先把 a 右移7個單位,得到bcd1234a,然後再把 b 右移7個單位 得到cd1234ab。按這個步驟迴圈四次後得到1234abcd。如下 void left rotate char str,int len,int k st...