劍指offer - 58 - II. 左旋轉字符串

題目描述

字符串的左旋轉操作是把字符串前面的若干個字符轉移到字符串的尾部。請定義一個函數實現字符串左旋轉操作的功能。比如,輸入字符串"abcdefg"和數字2,該函數將返回左旋轉兩位得到的結果"cdefgab"。

示例 1:

輸入: s = “abcdefg”, k = 2
輸出: “cdefgab”
示例 2:

輸入: s = “lrloseumgh”, k = 6
輸出: “umghlrlose”

限制:

1 <= k < s.length <= 10000

思路1

這題考察常用類API~

  • 法1:直接用String類的 substring() 方法進行拼接。

語法

public String substring(int beginIndex)

public String substring(int beginIndex, int endIndex)

參數
beginIndex – 起始索引(包括), 索引從 0 開始。

endIndex – 結束索引(不包括)。

一句話概括:包頭不包尾

代碼

class Solution {
    public String reverseLeftWords(String s, int n) {
    	return s.substring(n) + s.substring(0, n);
    }
}

執行用時 :
0 ms, 在所有 Java 提交中擊敗了100.00%的用戶
內存消耗 :
39.6 MB, 在所有 Java 提交中擊敗了100.00%的用戶

思路2

使用char數組拼接存儲然後轉換爲String。

語法:
char charAt(int index) 返回指定索引處的 char 值。
static String valueOf(primitive data type x) 返回給定data type類型x參數的字符串表示形式。

代碼

class Solution {
    public String reverseLeftWords(String s, int n) {
        char x[] = new char[s.length()];
        for(int i=n;i<s.length();i++){
            x[i-n]=s.charAt(i);
        }
        for(int i=0;i<n;i++){
            x[s.length()-n+i]=s.charAt(i);
        }
        String x1 = String.valueOf(x);
        return x1;
    }
}


執行用時 :
4 ms, 在所有 Java 提交中擊敗了21.54%的用戶
內存消耗 :
40 MB, 在所有 Java 提交中擊敗了100.00%的用戶

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章