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...