字串的左旋轉操作是把字串前面的若干個字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如,輸入字串"abcdefg"和數字2,該函式將返回左旋轉兩位得到的結果"cdefgab"。
示例 1:
輸入: s = "abcdefg", k = 2
輸出: "cdefgab"
示例 2:
輸入: s = "lrloseumgh", k = 6
輸出: "umghlrlose"
限制:1 <= k < s.length <= 10000
「不能申請額外空間,只能在本串上操作」。
不能使用額外空間的話,模擬在本串操作要實現左旋轉字串的功能還是有點困難的。
可以通過區域性反轉+整體反轉 達到左旋轉的目的。
具體步驟為:
反轉區間為前n的子串
反轉區間為n到末尾的子串
反轉整個字串
「最後就可以得到左旋n的目的,而不用定義新的字串,完全在本串上操作。」
例如 :示例1中 輸入:字串abcdefg,n=2
反轉區間為前n的子串 :bacdefg
反轉區間為n到末尾的子串:bagfedc
反轉整個字串:cdefgab
最終得到左旋2個單元的字串:cdefgab
public class 左旋轉字串
// 反轉區間為前n的子串 :bacdefg
// 反轉區間為n到末尾的子串:bagfedc
// 反轉整個字串:cdefgab
public static void reversestring(char chars,int start,int end)
}}
面試題58 ii 左旋轉字串
題目 字串的左旋轉操作是把字串前面的若干個字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如,輸入字串 abcdefg 和數字2,該函式將返回左旋轉兩位得到的結果 cdefgab 示例 示例 1 輸入 s abcdefg k 2 輸出 cdefgab 示例 2 輸入 s lrlose...
面試題58 II 左旋轉字串
字串的左旋轉操作是把字串前面的若干個字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如,輸入字串 abcdefg 和數字2,該函式將返回左旋轉兩位得到的結果 cdefgab 示例 1 輸入 s abcdefg k 2 輸出 cdefgab 示例 2 輸入 s lrloseumgh k...
劍指 Offer 58 II 左旋轉字串
題目 這道題本身不是很難,熟知string相關函式即可。思路一 最簡單的方式,利用substring函式分別獲取兩部分,即可完成拼接。class solution 思路二 若不能用substring 函式,則利用該迴圈,先從第n 1位 字元新增到乙個stringbuilder中,然後再把第一位到第n...