左旋转字符串
左旋转字符串
http://www.nowcoder.com/practice/12d959b108cb42b1ab72cef4d36af5ec
牛客的《剑指Offer》难度分级混乱,这种题目应该放在简单的里面,结果放到了中等。
三次翻转啥的确实是没想到,以后有空的时候再看字符串翻转的题解吧,我想的是把这个字符串自身拼接在一起,然后截取其中的一部分,就是结果。
由于题目说了k <= s.length()
,因此这道题目不用考虑取模的情形,当然代码里面还是进行了取模,算是更广泛的一种可能性。
题目的可以改进的地方:
k
超过s
长度的场景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); } }