題目一:
如果乙個字串 str ,把字串 str 前面的任意部分挪到後面去形成的字串叫做 str 的旋轉詞。比如 str = 「 1234 」 , 那麼 str 的旋轉詞有 「 1234 」 , 「 2341 」 , 「 3412 」 , 「 4123 」 。給定兩個字串 a 和 b ,請判斷 a 和 b 是否互為旋轉詞?
舉例:a = 」 cdab 」 , b = 」 abcd 」 。返回 true。
a = 」 1ab2 」 , b = 」 ab12 」 。返回 false。
a = 」 2ab1 」 , b= 」 ab12 」 。 返回 true。
思路:最優解時間複雜度為 o(n)
舉例:a = 」 1234 「
a + a = 」 12341234 「
很明顯發現,如果字串 a 的長度為 n,在 a + a 的大字串中,任意乙個長度為 n 的子串都是 a 的旋轉詞。
題目二:
給定乙個字串 a, 請在單詞間做逆序調整。
舉例:」 pig loves dog 」 逆序成 」 dog loves pig 」 。
」 i』m a student. 」 逆序成 」 student. a i』m 」
思路:
題目三:
給定乙個字串 a 和乙個整數 i。n為字串的長度,i 為 a 中的位置,將 a [ 0 … i ] 移到右側,a [ i + 1 … n - 1 ]移到左側。
舉例:a = 」 abcde 」 ,i = 2 。將 str 調整為 」 deabc 」 。
要求:時間複雜度為 o(n),額外空間複雜度為 o(1)。
思路:題目四:
給定乙個字串型別的陣列 strs,請找到一種拼接順序,使得將所有的字串拼接起來組成的大字串是所有可能性中字典順序最小的,並返回這個字串。
舉例:strs = [ 」 abc 」 , 」 de 」 ],可以拼接成 」 abcde 「,也可以拼接成 」 deabc 「,但是前者的字典順序更小,所以返回 」 abcde 」 。
strs = [ 」 b 「, 」 ba 」 ], 可以拼接成 」 bba 「, 也可以拼接成 」 bab 「,但是後者的字典順序更小,所以返回 」 bab 「。
思路:最優解的時間複雜度o(n*logn),其實質是一種排序的實現。
方案二中是比較兩個字串彼此拼接後的字典順序,所以能成功。
字串逆序
1 方法1 protected void page load object sender,eventargs e 1.逆序乙個字串 public string reversestr return s1 2 方法2 public void reversestr 方法3 protected void p...
字串逆序
reverse int arr,int b,int e rightshift int arr,int n,int k abc defg defg abc 方法一 翻轉 abc defg cba gfed cba gfed defg abc經過三次翻轉 如上。方法二 交換加翻轉 abc defgh d...
字串逆序
基本上沒有這麼考的,放在這裡主要是為了和後面的原地逆序做個對比。很簡單,直接分配乙個與原字串等長的字元陣列,然後反向拷貝一下即可。char reverse char s 原地逆序 英文叫做in place reverse。這是最常考的,原地逆序意味著不允額外分配空間,主要有以下幾種方法,思想都差不多...