牛客的《剑指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);
}
} 
京公网安备 11010502036488号