题目链接
题目描述
实现代码
个人思路实现代码:
class Solution {
public boolean rotateString(String s, String goal) {
int m = s.length();
int n = goal.length();
if(m != n) {
return false;
}
char firstG = goal.charAt(0);
for(int i=0; i<m; i++) {
char curS = s.charAt(i);
if(curS == firstG) {
int j = i+1;
int k = 1;
boolean access = true;
for(; j<m & k<n; j++, k++) {
if(s.charAt(j) != goal.charAt(k)) {
access = false;
break;
}
}
if(access) {
for (j = 0; j < i; j++) {
if (s.charAt(j) != goal.charAt(k + j)) {
access = false;
break;
}
}
}
if(access) {
return true;
}
}
}
return false;
}
}
参考思路一:源字符串拼接寻找子串思想:
class Solution {
public boolean rotateString(String s, String goal) {
return s.length() == goal.length() && (s + s).contains(goal);
}
}
参考思路二:数学思想:
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;
}
}