我的演算法學習之路 演算法題 回環變位

2021-07-27 05:48:52 字數 1217 閱讀 9003

演算法(第四版)1.2.6題:

如果字串s中的字元迴圈移動任意位置之後能夠得到另一字串t,那麼s就被稱為t的回環變位。例如,actgacg 就是 tgacgac 的乙個回環變位,反之亦然。判定這個條件在基因組序列中的研究是十分重要的。編寫乙個演算法檢查兩個給定的字串s和t是否互為回環變位。

跟下面的乙個哥們兒想的一樣,想著用雙迴圈,i ,j什麼的,我比較笨,真的嘗試著寫了寫,結果浪費了乙個多小時,套了兩個迴圈加乙個if語句,最後還沒寫出來,**……

最後在網上找了找答案,發現有非常簡單的方法,一行**就能實現,有兩種:

第一種是呼叫string類的cotains(string s)方法,這個方法是判斷呼叫方法的物件(字串型別)是否包含字串s,返回值是boolean型別的,如果包含返回true,不包含則返回false;

**是:

public class circularrotation

public static boolean iscircularrotation(string s, string t)

}

第二種是通過string類下的contact(string s)方法和indexof(string t)方法的組合實現的,,contact()方法是將呼叫方法的物件(字串型別)跟傳入的字串s連線起來,返回乙個新的字串,indexof()方法則是「返回指定子字串在此字串中第一次出現處的索引。」「如果字串引數作為乙個子字串在此物件中出現,則返回第乙個這種子字串的第乙個字元

的索引;如果它不作為乙個子字串出現,則返回 -1。」

通過判斷返回的值是否大於0來判斷字串t是否存在於呼叫方法的字串中。

**是:

public class circularrotation

public static boolean iscircularrotation(string s, string t)

}

正常邏輯實現寫出來的**如下,其中參考了

蘑菇君520的思路,在此表示感謝,開源的力量是偉大的:

public class circularrotation

public static boolean iscircularrotation(string s, string t)

if(s.length()!=t.length())

for(int i=0; i以下是參考所用的兩篇部落格,在此表示感謝!

我的演算法學習之路

我走過的彎路 我不是科班畢業的學生,帶我的leader說要打好計算機基礎,演算法是乙個基礎。一般就會網上一搜 如何學好演算法 這麼一搜就會有很多的答案 人們說,演算法導論 segdewick的演算法好 人們說,初學者不要看演算法導論很難 人們說,小白先看演算法 人們說,清華大學的鄧俊輝老師的網課講的...

我的演算法學習之路

我走過的彎路 我不是科班畢業的學生,帶我的leader說要打好計算機基礎,演算法是乙個基礎。一般就會網上一搜 如何學好演算法 這麼一搜就會有很多的答案 人們說,演算法導論 segdewick的演算法好 人們說,初學者不要看演算法導論很難 人們說,小白先看演算法 人們說,清華大學的鄧俊輝老師的網課講的...

演算法學習之路

目錄 演算法學習之路 一 前言 一 書籍 二 學習內容 1.空間複雜度,時間複雜度 2.貪心演算法 總結 由於長期沉迷摸魚哲學,感覺自己已經快廢了,決定今天開始學習一些演算法資料充實自己,希望不要三分鐘熱度吧。使用的學習書籍是csdn中自帶的 趣學演算法 看過很多演算法的教學書籍了,開頭都是老面孔了...