题目:796. 旋转字符串
发现就真的特别有意思的解法,当2个s组装在一起的时候,如果包含了目标字符串,那就肯定能旋转得到。(发现人生也是也,有时候转变个角度,马上就能看到不一样的事情!!!啊,我不要钻牛角尖了!!!)
class Solution {
public boolean rotateString(String s, String goal) {
if(s.length() == goal.length() && (s+s).contains(goal)){
return true;
}
return false;
}
}
或者是:长度一定要相等;
假设 s旋转 i 位,则与 goal 中的某一位字符goal[j] 对应的原 s 中的字符应该为 s[(i+j) \bmod n]。在固定 i的情况下,遍历所有 j,若对应字符都相同,则返回true。否则,继续遍历其他候选的 i。
class Solution {
public boolean rotateString(String s, String goal) {
int m = s.length(), n = goal.length();
if (m != n) {
return false;
}
for (int i = 0; i < n; i++) {
boolean flag = true;
for (int j = 0; j < n; j++) {
if (s.charAt((i + j) % n) != goal.charAt(j)) {
flag = false;
break;
}
}
if (flag) {
return true;
}
}
return false;
}
}