剑指Offer算法题解:58 - II. 左旋转字符串

简介: 剑指Offer算法题解:58 - II. 左旋转字符串

(一)题目描述

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


来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


(二)输入、输出示例

示例 1:

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

示例 2:

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

(三)代码实现

方法1:

解题思路

最近喜欢使用str_split()函数,就先使用str_split()函数将字符串转成数组。根据数组的key跟n进行判断,若小于n则使用array_push()函数将数组元素放在数组尾部并删除原位置的元素。最后数组元素拼接成字符串。


代码实现

class Solution {
    /**
     * @param String $s
     * @param Integer $n
     * @return String
     */
    function reverseLeftWords($s, $n) {
        $arr_s = str_split($s);
        foreach ($arr_s as $k_s => $v_s){
            if ($k_s < $n){  
                array_push($arr_s, $v_s);  // 需要移到尾部的元素
                unset($arr_s[$k_s]);
            }
        }
        $s = join("", $arr_s);
        return $s;
    }
}

方法2:

解题思路

使用php内置函数substr()进行字符串的截取。


代码实现

class Solution {
    /**
     * @param String $s
     * @param Integer $n
     * @return String
     */
    function reverseLeftWords($s, $n) {
      // substr($s,$n) 将$s字符串从$n截至末尾
      // substr($s,0,$n) 将$s字符串从0截至$n
        return substr($s,$n) . substr($s,0,$n);
    }
}

(四)性能分析

|实现方案| 运行时间 | 内存消耗 |

|–|–|–|–|

|方法一(字符串转数组)| 8ms | 16.3 MB |

|方法二(内置函数)| 4ms | 14.7 MB |


目录
相关文章
|
9月前
|
设计模式 算法 Java
京东Java高开岗三面算法+数据库+设计模式,复习1个月成功拿offer
京东高级java现场三面,包含:算法、数据库、设计模式、java高级等,尾部有最全BAT高级java面试题目和答案福利,想要的就快来领走吧~(领取方式见文末)
|
SQL 算法 架构师
字节算法中了80%!靠着这份GitHub上的算法小抄,成功斩获Offer
前言 最近,GitHub上的算法小抄又火了!已经有不少人靠它手撕算法题,拿下了字节、腾讯等大厂offer
92 0
|
9月前
|
人工智能 算法 程序员
这本“算法宝典”讲得透彻,完全掌握后,我竟拿到字节跳动offer
字节跳动,相信大家都已经对这家公司很熟悉了,尤其是近几年来,对它的认识也在不断刷新,它惊人的发展速度确实让行业内人刮目相看,如今很多年轻人也想要挤进字节跳动,它越来越火热,自然也就越来越难进了!
太可惜了,四面字节跳动,我的offer竟被一道“算法题”给拦截了
算法,在行业里越来越重要,一线互联网公司也非常注重算法,所以在面试时基本上都有涉及到。字节跳动是出了名的爱问算法题,几乎每一面都要问到算法。实际上,现在很多公司都会问算法,尤其是对于应届生来说,要求更高,所以想要进大厂,搞定算法是很重要的。
|
SQL 算法 架构师
字节算法中了80%!靠着这份GitHub上的算法小抄,成功斩获Offer
前言 最近,GitHub上的算法小抄又火了!已经有不少人靠它手撕算法题,拿下了字节、腾讯等大厂offer
|
9月前
|
消息中间件 算法 Java
三面“有赞”Java岗斩获offer:Spring+JVM+并发锁+分布式+算法
年末离职,年初为面试也筹备挺长一段时间,找了不少复习资料,刷了很多题在网上投了很多简历最终面试了有赞,还有幸拿到offer!
|
9月前
|
SQL 算法 NoSQL
三面头条,靠P9级算法大牛分享的两本算法pdf书籍,轻松拿到offer
头条一面(Java+项目) 1.倒排索引 2.讲讲redis里面的哈希表? 3.happen-before的规则? 4.volatile修饰符,synchronize锁 5.java单例模式的实现,懒汉、饿汉? 6.进程与线程的区别,多进程和多线程的区别?
|
9月前
|
算法 容器
【算法训练营】栈合集(1) 剑指 Offer 31. 栈的压入、弹出序列 || 32. 最长有效括号 || 682. 棒球比赛 || 面试题 03.01. 三合一
【算法训练营】栈合集(1) 剑指 Offer 31. 栈的压入、弹出序列 || 32. 最长有效括号 || 682. 棒球比赛 || 面试题 03.01. 三合一
63 0
|
9月前
|
存储 算法 NoSQL
“三顾字节”,九次面试,只要算法搞得好,大厂offer跑不了
4.29 字节春招截止倒数第二天,杭州Java商业变现部门暑假实习,隔天挂,春招结束(人生的第一份简历,嗯就开始即结束
|
9月前
|
前端开发 JavaScript 算法
字节跳动八进八出,offer到手,发现项目不重要算法才最重要
先进行说明一下,本人刚刚大三结束,去年十二月的时候是投递了字节的视频架构的实习,共三轮技术面+一轮hr面,成功拿到offer实习了五个月。

热门文章

最新文章