每日一练(32):左旋转字符串

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

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


示例 1:


输入: s = "abcdefg", k = 2

输出: "cdefgab"


示例 2:


输入: s = "lrloseumgh", k = 6

输出: "umghlrlose"


限制:


1 <= k < s.length <= 10000


来源:力扣(LeetCode)


链接:https://leetcode-cn.com/probl...


方法一:切分


算法流程:


字符串的拼接与旋转有一个挺好的办法 就是将字符串倍增成为两个同样的字符串拼接的长字符串,然后旋转均可


//1
string reverseLeftWords(string s, int n) {
    int len = s.size();
    s += s;
    return s.substr(n, len);
}
//2
string reverseLeftWords(string s, int n) {
    s += s;
    return s.substr(n, s.size() / 2);
}
//3
string reverseLeftWords(string s, int n) {
    return (s+s).substr(n, s.size());
}


方法二:删除


算法流程:


将前k个字符插入字符串,然后将前k个删除即可。空间0(1)


string reverseLeftWords(string s, int n) {
    for (int i = 0; i < s.size(); i++) {
        s.push_back(s[i]);
    }
    s.erase(0, n);
    return s;
}
目录
相关文章
|
1月前
|
算法 Java Go
Rust每日一练(Leetday0018) N皇后II、最大子数组和、螺旋矩阵
Rust每日一练(Leetday0018) N皇后II、最大子数组和、螺旋矩阵
30 1
Rust每日一练(Leetday0018) N皇后II、最大子数组和、螺旋矩阵
|
1月前
剑指Offer LeetCode 面试题58 - II. 左旋转字符串
剑指Offer LeetCode 面试题58 - II. 左旋转字符串
25 0
|
11月前
|
机器学习/深度学习 Java
每日一练之斐波那契的实现
每日一练之斐波那契的实现
66 0
|
算法 Java
【牛客刷题】每日一练—链表的回文结构
【牛客刷题】每日一练—链表的回文结构
93 1
【牛客刷题】每日一练—链表的回文结构
|
存储 Java
【牛客刷题】每日一练—链表分割
【牛客刷题】每日一练—链表分割
68 1
|
算法 索引
LeetCode每日一练(杨辉三角)
LeetCode每日一练(杨辉三角)
143 0
LeetCode每日一练(杨辉三角)
|
算法
『牛客|每日一题』逆波兰表达式
基础算法无论在研究生面试还是求职面试都是十分重要的一环,这里推荐一款算法面试神器:牛客网-面试神器;算法题只有多刷勤刷才能保持思路与手感,大家赶紧行动起来吧(温馨提示:常见的面试问答题库也很nice哦 https://www.nowcoder.com/link/pc_csdncpt_ll_sf
70 0
『牛客|每日一题』逆波兰表达式
|
算法
『牛客|每日一题』有效括号序列
基础算法无论在研究生面试还是求职面试都是十分重要的一环,这里推荐一款算法面试神器:牛客网-面试神器;算法题只有多刷勤刷才能保持思路与手感,大家赶紧行动起来吧(温馨提示:常见的面试问答题库也很nice哦 https://www.nowcoder.com/link/pc_csdncpt_ll_sf
95 0
『牛客|每日一题』有效括号序列
|
Java
【牛客刷题】每日一练——回文字符串
【牛客刷题】每日一练——回文字符串
131 0
|
机器学习/深度学习
【牛客刷题】每日一练——自守数
【牛客刷题】每日一练——自守数
137 0