个人评价:又是一道内置函数 5s 解题,遍历字符也可实现但个人认为没必要 😂

题目难度:🌟 (参考 LeeCode 简单🌟 、中等🌟 🌟 、困难🌟 🌟 🌟 )

另,通常算法题会考察分析时间复杂度和空间复杂度,可参考笔者之前的文章

「数据结构&算法」必知必会系列:3. 时间 & 空间复杂度(下)

左旋转字符串

题目描述

剑指 Offer 58 - II. 左旋转字符串

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

示例 1:

输入: s = “abcdefg”, k = 2

输出: “cdefgab”

示例 2:

输入: s = “lrloseumgh”, k = 6

输出: “umghlrlose”

限制:

1 <= k < s.length <= 10000

解题思路

(⊙o⊙)… Golang 字符截断搞一下?

func reverseLeftWords(s string, n int) string {
    return s[:n] + s[n:len(s)]
}

复杂度?🙌 O(n) 字符串切片函数为线性时间复杂度

总结

感觉这题可考察下新手对字符串的基础操作,当成算法的话其实真没看出为啥要考 😂

找到一篇有关 Golang 字符串截断的文章作为引申:【Go】高效截取字符串的一些思考

个人认为一般业务使用上完全没必要那么Geek,除非涉及到内核等特别需要提效的代码