Leetcode459
1.问题描述
2.解决方案
解法一:民间巧妙移位解法
class Solution {
public:
bool repeatedSubstringPattern(string s) {
string str=s+s;
string str1=str.substr(1,str.size()-2);
if(str1.find(s)==string::npos) return false;
else return true;
}
};
Java版本,substring(),是左开右闭区间
class Solution {
public boolean repeatedSubstringPattern(String s) {
String str = s + s;
if(str.substring(1, str.length()-1).indexOf(s)==-1) return false;
else return true;
}
}
解法二:暴力
//暴力代码
public boolean repeatedSubstringPattern(String s) {
for(int i = 1; i < s.length(); i++) {
String str = rotate(s.toCharArray(),i);
if(s.equals(str)) return true;
}
return false;
}
public String rotate(char[] nums, int k) {
k = k % nums.length;
reverse(nums, 0, nums.length - 1);
reverse(nums, 0, k - 1);
reverse(nums, k, nums.length - 1);
return String.valueOf(nums);
}
public void reverse(char[] nums, int begin, int end) {
int i = begin, j = end;
while(i < j) {
char temp = nums[i];
nums[i++] = nums[j];
nums[j--] = temp;
}
}