劍指58 II 左旋轉字串

2022-06-28 06:48:11 字數 945 閱讀 1625

字串的左旋轉操作是把字串前面的若干個字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如,輸入字串"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...