LeetCode459——Repeated Substring Pattern
2016-12-28 17:09
375 查看
题目:
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.)
解析:
题意就是要判断一个字符串是不是他的多个相同子串连接而成的。思路:
将第一个字符作为子串的头,每次对子串增加一个字符,判断子串是否能够组成字符串去掉子串后的剩下部分。这个题目有很多可以优化的地方,比如循环条件、执行循环体之前,先判断字符串长度是否能够整除子串的长度。有了这些优化就可以顺利AC了。
核心代码:
public boolean repeatedSubstringPattern(String str) {if(str.length()<=1)
return false;
String substr="";
String substr1="";
int len=str.length();
boolean flag=true;
for(int i=1;i<=str.length()/2;i++){
if(len%i==0){
int count=0;
flag=true;
substr=str.substring(0, i);
substr1=str.substring(i);
while(substr1.length()>0){
if(substr1.indexOf(substr)==0)
substr1=substr1.substring(count+i);
else{
flag=false;
break;
}
}
}
if(flag){
return flag;
}
}
return flag;
}
下面是网友的代码:
public boolean repeatedSubstringPattern(String str) {
int l = str.length();
for(int i=l/2;i>=1;i--) {
if(l%i==0) {
int m = l/i;
String subS = str.substring(0,i);
StringBuilder sb = new StringBuilder();
for(int j=0;j<m;j++) {
sb.append(subS);
}
if(sb.toString().equals(str)) return true;
}
}
return false;
}
不同之处:
我的代码是对字符串分解,网友的代码是用子串组合字符串,看组合成的字符串是否与元字符串相等。相关文章推荐
- leetcode-459-Repeated Substring Pattern
- 【LeetCode 459】 Repeated Substring Pattern
- Leetcode 459 Repeated Substring Pattern
- LeetCode Repeated Substring Pattern
- Leetcode: Repeated Substring Pattern
- leetcode oj java Repeated Substring Pattern
- String-459-Repeated Substring Pattern
- 459. Repeated Substring Pattern*
- [LeetCode]Repeated Substring Pattern(Java)
- 【LeetCode】Repeated Substring Pattern 解题报告
- leetcode[Repeated Substring Pattern]//待整理多种解法
- LEETCODE--Repeated Substring Pattern
- [LeetCode] Repeated Substring Pattern 重复子字符串模式
- LeetCode : Repeated Substring Pattern
- Leetcode Repeated Substring Pattern
- [LeetCode] DP 之 Maximum Length of Repeated Substring
- Leetcode Problem 3: Longest non-repeated substring(LNRS).
- repeated-substring-pattern
- Repeated Substring Pattern
- [LeetCode] Longest substring without repeated characters