旋转字符串
难度:简单
如果字符串goal可以由s旋转而成,那么首先两个字符串长度需要相等;其次,我们取s的首字母,goal必有对应的与之相同的字母且后续每个位置对应s首字母后续的字母,那么我们模拟过程判断即可。
代码如下:
public boolean rotateString(String s, String goal) {
if (s.length()!=goal.length()){
return false;
}
char c = s.charAt(0);
for (int i = 0; i < goal.length(); i++) {
if (goal.charAt(i)==c){
boolean flag = true;
for (int j = 1; j < goal.length(); j++) {
int tmp = i+j;
if (goal.charAt(tmp%goal.length())!=s.charAt(j)) {
flag = false;
break;
}
}
if (flag){
return true;
}
}
}
return false;
}
执行结果:成功
本来看到100%打算心满意足的离开,但没想到题解更优秀。
如果 goal 可由 s 经过多步旋转而来,那么 goal 必然会出现在 s + s 中!!
public boolean rotateString(String s, String goal) {
return s.length() == goal.length() && (s + s).contains(goal);
}
ORZ 这怎么就没想到呢~