找出字符串中出现次数超过两次的长为10的子串。我用了最simple和粗暴的一种办法:遍历字符串所有的10长度子串,将其加入集合,当出现重复时加入结果集合。要注意结果集合的list要判重以避免出现3次以上的子串重复加入。 这里使用set来记录出现过的子串。
1. 看了下其他的解法,貌似都是差不多,不知道有没有更高效的解法
2. 当不限制子串长度的时候,这种解法是否可行(空间时间代价上)
public class Solution {
public List<String> findRepeatedDnaSequences(String s) {
List<String> res=new ArrayList<String>();
Set<String> word=new HashSet<String>();
int len=s.length();
for( int i=0;i<=len-10;i++ )
{
String substr=s.substring(i,i+10);
if( word.contains(substr)&&!res.contains(substr) )
{
res.add(substr);
}
word.add(substr);
}
return res;
}
}