《程式設計師面試金典》 反轉字串

2021-07-05 04:42:56 字數 628 閱讀 9398

題目描述:

請實現乙個演算法,在不使用額外資料結構和儲存空間的情況下,翻轉乙個給定的字串(可以使用單個過程變數),給定乙個string inistring,請返回乙個string,為翻轉後的字串。保證字串的長度小於等於5000。

測試樣例:

"this is nowcoder"返回:"redocwon si siht"

題目分析:

這道題目難度不是很大,首先可能會想到,重現建立乙個字串陣列,然後遍歷字串,把字元反方向放進字串陣列中,這樣實現可以,但是需要o(n)的空間複雜度。

可以在同乙個字串上實現反轉,頭尾的字元互換位置,這樣只需要o(1)的時間複雜度,在寫程式的時候要注意邊界條件,對應的位置是否正確,**實現如下:

**:

string reversestring(string inistring) {

int size=inistring.size();

int beg=0;

--size;

while(beg如果要實現字串的分段反轉,比如「you love i」反轉成「i love you」,可以兩次反轉,首先整體反轉,然後再部分反轉。

程式設計師面試金典 8 反轉字串

一 題目描述 假定我們都知道非常高效的演算法來檢查乙個單詞是否為其他字串的子串。請將這個演算法編寫成乙個函式,給定兩個字串s1和s2,請編寫 檢查s2是否為s1旋轉而成,要求只能呼叫一次檢查子串的函式。給定兩個字串s1,s2,請返回bool值代表s2是否由s1旋轉而成。字串中字元為英文本母和空格,區...

程式設計師金典 字串互異

題目描述 請實現乙個演算法,確定乙個字串的所有字元是否全都不同。這裡我們要求不允許使用額外的儲存結構。給定乙個string inistring,請返回乙個bool值,true代表所有字元全都不同,false代表存在相同的字元。保證字串中的字元為ascii字元。字串的長度小於等於3000。測試樣例 a...

程式設計師面試金典

1.有個小孩正在上樓梯,樓梯有n階台階,小孩一次可以上1階 2階 3階。請實現乙個方法,計算小孩有多少種上樓的方式。為了防止溢位,請將結果mod 1000000007 給定乙個正整數intn,請返回乙個數,代表上樓的方式數。保證n小於等於100000。int countways int n retu...