❓剑指 Offer 58 - II. 左旋转字符串
难度:简单
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
示例 1:
输入: s = “abcdefg”, k = 2
输出: “cdefgab”
示例 2:
输入: s = “lrloseumgh”, k = 6
输出: “umghlrlose”
限制:
1 <= k < s.length <= 10000
💡思路:局部反转+整体反转
进阶: 不能申请额外空间,只能在本串上操作。
具体步骤为:
-
反转区间为
前n
的子串 -
反转区间为
n
到末尾
的子串 - 反转 整个字符串
🍁代码:(Java、C++)
Java
class Solution {
public String reverseLeftWords(String s, int n) {
StringBuilder sb = new StringBuilder();
sb.append(s.substring(n));
sb.append(s.substring(0, n));
return sb.toString();
}
}
C++
class Solution {
public:
string reverseLeftWords(string s, int n) {
reverse(s.begin(), s.begin() + n);
reverse(s.begin() + n, s.end());
reverse(s.begin(), s.end());
return s;
}
};
🚀 运行结果:
🕔 复杂度分析:
-
时间复杂度:
O
(
n
)
O(n)
O(n),其中
n
为字符串的长度。 - 空间复杂度: O ( 1 ) O(1) O(1)。
题目来源:力扣。文章来源:https://www.toymoban.com/news/detail-475448.html
放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我LeetCode主页 / CSDN—力扣专栏,每日更新!文章来源地址https://www.toymoban.com/news/detail-475448.html
注: 如有不足,欢迎指正!
到了这里,关于(字符串 ) 剑指 Offer 58 - II. 左旋转字符串 ——【Leetcode每日一题】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!