【算法】剑指 Offer 58 - II.左旋转字符串(java / c / c++ / python / go / rust)
【摘要】 剑指 Offer 58 - II. 左旋转字符串:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 样例 1输入: s = "abcdefg", k = 2输出: "cdefgab" 样例 2输入: s = "lrloseumgh",...
剑指 Offer 58 - II. 左旋转字符串:
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
样例 1
输入:
s = "abcdefg", k = 2
输出:
"cdefgab"
样例 2
输入:
s = "lrloseumgh", k = 6
输出:
"umghlrlose"
提示
- 1 <= k < s.length <= 10000
分析
- 左移,可以理解为前面的到了尾部。
- 也可以理解为后面的到了头部。
- 所以就是后半部分拼上前半部分。
题解
java
class Solution {
public String reverseLeftWords(String s, int n) {
return s.substring(n) + s.substring(0, n);
}
}
c
char* reverseLeftWords(char* s, int n){
int len = strlen(s),i = 0;;
char *ans = malloc(sizeof(char) * (len + 1));
while(i < len){
*(ans++) = s[(n + i++)%len];
}
*ans= '\0';
return ans - len;
}
c++
class Solution {
public:
string reverseLeftWords(string s, int n) {
return s.substr(n, s.length() - n) + s.substr(0, n);
}
};
python
class Solution:
def reverseLeftWords(self, s: str, n: int) -> str:
return s[n:] + s[:n]
go
func reverseLeftWords(s string, n int) string {
return s[n:] + s[:n]
}
rust
impl Solution {
pub fn reverse_left_words(s: String, n: i32) -> String {
(&s[n as usize..]).to_string() + &s[..n as usize]
}
}
原题传送门:https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/
非常感谢你阅读本文~
欢迎【点赞】【收藏】【评论】~
放弃不难,但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的白帽子:https://bbs.huaweicloud.com/community/usersnew/id_1628396583336561 博客原创~
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)