劍指offer之字串左旋右旋問題

2021-08-05 21:41:17 字數 1065 閱讀 4875

右旋

關於思路: 1.

右旋就是把字串的前幾個字元放到字串的後面,首先,可以根據要旋轉的數量,把字串分成兩部分。

2.第一部分進行翻轉,第二部分進行翻轉。

3.整體翻轉

例如:abcdefgh  若要翻轉前兩個,首先把字串分為 ab cdefgh  ,然後  翻轉ba hgfedc ,最後整體翻轉得到cdefghab

關於**:

//將n個字元的陣列,迴圈左移k位  

void reserves(char* start,char* end)

}char* rightk(char*s, int length, int k)

}return s;

}int main()

執行結果:

右旋 關於思路: 1.

右旋就是把字串的前幾個字元放到字串的後面,首先,可以根據要旋轉的數量,把字串分成兩部分。

2.第一部分進行翻轉,第二部分進行翻轉。

3.整體翻轉

例如:abcdefgh  若要翻轉前兩個,首先把字串分為 abcdef  gh  ,然後  翻轉fedcba hg ,最後整體翻轉得到ghabcde

關於**:

void reserves(char* start,char* end)

}char* lightk(char*s, int length, int k)

}return s;

}int main()

執行結果:

關於總結:

左旋和右旋看起來做法都一樣,但是要注意,在處理翻轉區間的時候是完全不一樣的,右旋的個數就是從右往左數幾個字元,但是左旋的時候,這個個數是你這個字串倒數的那幾個,所以在設定區間時要特別注意。

劍指offer 左旋字串

組合語言中有一種移位指令叫做迴圈左移 rol 現在有個簡單的任務,就是用字串模擬這個指令的運算結果。對於乙個給定的字串行s,請你把其迴圈左移k位後的序列輸出。例如,字串行s abcxyzdef 要求輸出迴圈左移3位後的結果,即 xyzdefabc 是不是很簡單?ok,搞定它!分析 1.自己的思路 分...

劍指offer 左旋字串

字串的左旋轉操作是把字串前面的若干個字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如,輸入字串 abcdefg 和數字2,該函式將返回左旋轉兩位得到的結果 cdefgab 示例 1 輸入 s abcdefg k 2 輸出 cdefgab 示例 2 輸入 s lrloseumgh k...

左旋右旋字串

定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。如把字串abcdef 左旋轉2 位得到字串cdefab。請實現字串左旋轉的函式。要求時間對長度為n 的字串操作的複雜度為o n 輔助記憶體為o 1 分析 如果不考慮時間和空間複雜度的限制,最簡單的方法莫過於把這道題看成是把字串分成前後兩部...