面试题58 - II. 左旋转字符串——leetcode

题目描述:

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。

示例 1:
输入: s = “abcdefg”, k = 2
输出: “cdefgab”
示例 2:
输入: s = “lrloseumgh”, k = 6
输出: “umghlrlose”**
限制:
1 <= k < s.length <= 10000

解题思路:

1、看到这道题,第一个想法是首先要判断边界长度
2、第一种解题思路:将字符串转换为字符数组的形式进行解答
3、第二种解题思路:将String转换成StringBuilder,然后在使用StringBuilder.append()方法
4、第三种解题思路:直接利用String类中自带的substring(int i,int j)

下面来分别进行实现:

第一种解题思路:将字符串转换为字符数组的形式进行解答

class Solution {
    public static String reverseLeftWords(String s, int n) {
        if (s == null || n < 0 || n > s.length()) return "";
        char[] chars = s.toCharArray();
        int length = chars.length;
        String reverse = "";
        for(int i =n;i<length;i++){
            reverse += chars[i];
        }
        String reverse2 = "";
        for(int k=0;k<n;k++){
            reverse2 +=chars[k];
        }
       String reverse3 = reverse + reverse2;
       return reverse3;
    }
}

第二种解题思路:将String转换成StringBuilder,然后在使用StringBuilder.append()方法

class Solution {
	public String reverseLeftWords(String s, int n) {
		if (s == null || n < 0 || n > s.length()) return "";
		StringBuilder sb = new StringBuilder(s);
		sb.append(sb.substring(0, n));
		return sb.substring(n, sb.length());
	}
}

第三种解题思路:直接利用String类中自带的substring(int i,int j)

class Solution {
	public String reverseLeftWords(String s, int n) {
	    if (s == null || n < 0 || n > s.length()) return "";
		String s1 = s.substring(0,n);
		String s2  = s.substring(n,s.length());
		return  s2 + s1;
	}
}
发布了62 篇原创文章 · 获赞 21 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/lsy_666/article/details/104840144
今日推荐