Leetcode——左旋转字符串
Posted Yawn,
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode——左旋转字符串相关的知识,希望对你有一定的参考价值。
1. 题目
2. 题解
(1)较蠢解法
- 转为字符数组后翻转,记录前后半段再替换
class Solution {
public String reverseLeftWords(String s, int n) {
int len = s.length();
char[] str = s.toCharArray();
int k = n % len; //实际需要翻转位数
// 1.记录翻转前半段
char[] kstr = new char[k];
for(int i = 0; i < k; i++){
kstr[i] = str[i];
}
// 2.翻转后半段移至前半段
for(int i = 0; i < len - k; i++){
str[i] = str[i + k];
}
// 3.将1记录的翻转前半段 赋值 给后半段
int m = len - k;
for(int i = 0; i < k; i++){
str[m] = kstr[i];
m++;
}
//转为String 返回
String news = String.valueOf(str);
return news;
}
}
(2)字符串切片
- 使用substring函数直接切片处理
class Solution {
public String reverseLeftWords(String s, int n) {
return s.substring(n, s.length()) + s.substring(0, n);
}
}
(3)使用StringBulider
class Solution {
public String reverseLeftWords(String s, int n) {
StringBuilder res = new StringBuilder();
for(int i = n; i < s.length(); i++)
res.append(s.charAt(i));
for(int i = 0; i < n; i++)
res.append(s.charAt(i));
return res.toString();
}
}
(4)直接使用String
class Solution {
public String reverseLeftWords(String s, int n) {
String res = "";
for(int i = n; i < s.length(); i++)
res += s.charAt(i);
for(int i = 0; i < n; i++)
res += s.charAt(i);
return res;
}
}
以上是关于Leetcode——左旋转字符串的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode(剑指 Offer)- 58 - II. 左旋转字符串
LeetCode(剑指 Offer)- 58 - II. 左旋转字符串
Leetcode剑指 Offer 58 - II. 左旋转字符串(简单模拟)