三步翻轉法 有意思的方法

2021-07-11 06:29:14 字數 2827 閱讀 8871

1.實現乙個函式,可以左旋字串中的k個字元。

aabcd左旋乙個字元得到abcda

aabcd左旋兩個字元得到bcdaa

首先還是把main()函式給出來

這裡取函式名為move_left

#include#include#include#includeint main()

方法一: 移位根據k的值,需要逆序2個字元----->cdefab1.將字串abcdef的第乙個字元儲存起來(這裡是a)-->

bcdef

2.將剩下的字串都向前移一位---->

bcdef

3.將剛才儲存的字元給字串最後乙個位置----->bcdef

a4.根據k值進行迴圈

**如下:

void move_left(char* arr, int k)

*(arr + len-1) = tmp;//每次迴圈都要將第乙個數放在最後乙個位置

}}

方法二:三步翻轉法構造這個函式的思路:根據k的值,需要逆序2個字元----->cdefab1.逆序整個字串得到------->fedcba

2.將字串前面len-k個字元翻轉一次---->cdefba

3.將字串後面剩下的字元逆序----->cdefab

**如下:

void reverse(char* left, char*right)

}void move_left(char* arr, int k)

個人覺得找個方法很值得大家學習,所以標題我也就用它了2.現乙個函式,可以右旋字串中的k個字元(方法同上) 例:

aabcd右旋乙個字元得到daabc

aabcd右旋兩個字元得到cdaab

同樣的道理,右旋 --如法炮製

直接給出**:

#include#include#include#includevoid reverse(char *left ,char* right)

}void move_right(char *arr, int k)

int main()

上面的方法都可以為下面的問題提供乙個便利的方法3.判斷乙個字串是否為另外乙個字串旋轉之後的字串。

例如:給定s1 = aabcd和s2 = bcdaa,返回1,給定s1=abcd和s2=acbd,返回0.

方法一:

按照三步翻轉法的思路;

我就直接給**,(這裡新增了主函式,便於大家理解)

#include#include#include#includevoid move_left(char* arr, int k)   //左旋

*(arr + len - 1) = tmp;//每次迴圈都要將第乙個數放在最後乙個位置 }}

int main()

else

system("pause");

return 0;

}

方法二:看到這個題的時候,第乙個想法就是用三步翻轉法,但做完之後,又想到了乙個點子;想知道麼??來,下面看!

思路:

1.首先比較之前,這兩個字串大小總該是一樣的吧

2.翻轉後和另乙個字串比較(有沒有想到strcat這個函式呢),那就將試試strcat(s1,s1)------>

aabcd

aabcd

3.如果得到的字串若包含另乙個字串,那麼肯定  是

下面給出**:

#include#include#include#includeint is_move(char* arr, char* src)

strncat(arr,arr,len1); //注意(2)

if (strstr(arr, src))

else }

int main()

else

system("pause");

return 0;

注意:1.如果兩個字串長度都不一樣,那麼還有比較的意義麼2.如果用了strcat(),那麼作為這個函式的結束標誌\0哪去了?

看完了,記得點評哦

日常 演算法 旋轉字串 三步翻轉法

給定乙個字串,要求把字串前面的若干個字元移動到字串的尾部,如把字串 abcdef 前面的2個字元 a 和 b 移動到字串的尾部,使得原字串變成字串 cdefab 請寫乙個函式完成此功能,要求對長度為n的字串操作的時間複雜度為 o n 空間複雜度為 o 1 對於這個問題,換乙個角度思考一下。將乙個字串...

有意思的三國

三國 是很有意思的。雖然三國只不過是許多次朝代更替之一,時間也不很長,但是三國似乎很熟悉。董卓亂政 挾天子以令諸侯 赤壁之戰 生子當如孫仲謀 就連那些幾乎可以斷定不可能存在的事情,桃園結義 空城計,我們不僅耳熟 而且能詳 還有矛盾的三姓家奴 馬中赤兔人中呂布,經常被 崇拜的武聖人關羽 為什麼我們這麼...

執行緒的幾個有意思的方法

1.join 方法 字面意思就是 讓某個執行緒join 參加 加入 進來。即讓加入的那個執行緒執行,而當前正在執行的執行緒 呼叫的執行緒 阻塞,直到加入的執行緒執行完成。一句話 誰join進來就執行誰。沒有使用join時的情況 package threaddemo public class firs...