Repeated Substring Paterm
阿新 • • 發佈:2018-11-06
題目描述:
Given a non-empty string check if it can be constructed by taking a substring of it and appending multiple copies of the substring together. You may assume the given string consists of lowercase English letters only and its length will not exceed 10000.
Example 1:
Input: "abab" Output:True Explanation: It's the substring "ab" twice.
Example 2:
Input: "aba" Output: False
Example 3:
Input: "abcabcabcabc" Output: True Explanation: It's the substring "abc" four times. (And the substring "abcabc" twice.)
原題地址:
https://leetcode.com/problems/repeated-substring-pattern/#/description刷題雜感:
第一種做法:
public boolean repeatedSubstringPattern(String s) {
boolean b = false;
for(int i =1;i<=s.length()/2;i++){ //遍歷所有可能性
String ele = s.substring(0,i); //子基字串
int number = s.length()/ele.length();
if(getNewString(ele,number).equals(s)){ //判斷根據子字串得出的新字串是否和原字串相等
b = true;
break;
}
}
return b;
}
public String getNewString(String s,int m){
String str = "";
for(int i =0;i<m;i++){
str = s+str;
}
return str;
}
升級版的做法;
public boolean repeatedSubstringPattern(String s) {
boolean b = false;
int length = 1;
int i = length;
while(i+length<=s.length()){
String str = s.substring(0,length); //確定基字串
if(s.substring(i,length+i).equals(str)){ //判斷該字串是否為真-基字串
if(s.length()%length==0){ //如果基字串能整除原字串,則為真
b = true;
}
i = i+length;
}else{
b = false;
length++;
i = length;
}
}
return b;
}