左旋转字符串

左旋转字符串

http://www.nowcoder.com/practice/12d959b108cb42b1ab72cef4d36af5ec

牛客的《剑指Offer》难度分级混乱,这种题目应该放在简单的里面,结果放到了中等。

三次翻转啥的确实是没想到,以后有空的时候再看字符串翻转的题解吧,我想的是把这个字符串自身拼接在一起,然后截取其中的一部分,就是结果。

由于题目说了k <= s.length(),因此这道题目不用考虑取模的情形,当然代码里面还是进行了取模,算是更广泛的一种可能性。

题目的可以改进的地方:

  1. k 超过s长度的场景
  2. k为负数的场景,是不是可以当k < 0时相当于右旋。如果不需要考虑,应该给出k的取值范围。
public class Solution {
    public String LeftRotateString(String s, int k) {
        if (s == null || s.length() == 0)
            return "";
        if (k == 0) // 题目没有说明 k < 0如何,实测可知案例中没有k为负数的
            return s;
        int len = s.length();
        k %= len;
        s += s;
        return s.substring(k, k + len);
    }
}
全部评论

相关推荐

06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务