leetcode剑指 Offer 58 – II. (左旋转字符串)–Java语言实现
求:
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串”abcdefg”和数字2,该函数将返回左旋转两位得到的结果”cdefgab”。
示例 1:
输入: s = “abcdefg”, k = 2
输出: “cdefgab”
示例 2:
输入: s = “lrloseumgh”, k = 6
输出: “umghlrlose”
限制:
1 <= k < s.length <= 10000
题目链接: https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/
解:
没有任何难度,通过substring获取子串,然后拼接字符串即可。
也可以通过字符数组的方式来操作,每次循环都把第一个元素放到数组最末尾,其他元素依次向前移动。循环n次后得到结果。
这里面直接使用substring来操作是最快的。
public String reverseLeftWords(String s, int n) { return s.substring(n) + s.substring(0, n); }
public String reverseLeftWords(String s, int n) { StringBuilder builder = new StringBuilder(); for (int i = n; i < s.length(); i++) { builder.append(s.charAt(i)); } for (int i = 0; i < n; i++) { builder.append(s.charAt(i)); } return builder.toString(); }
public String reverseLeftWords(String s, int n) { char[] chars = s.toCharArray(); for (int i = 0; i < n; i++) { char tmp = chars[0]; for (int j = 0; j < chars.length - 1; j++) { chars[j] = chars[j + 1]; } chars[chars.length - 1] = tmp; } return String.valueOf(chars); }