【发布时间】:2015-06-20 22:22:57
【问题描述】:
计算给定字符串的所有可能子字符串并检查它们是否满足以下条件的最快方法是什么。
条件是: 如果生成的子字符串的第一个和最后一个字符相同,则 count 加一。我们需要找到给定非常大字符串的所有这些可能的子字符串。
我尝试过天真的蛮力方法,但它不适用于长度为 10^7 的字符串。 请帮忙:(
for(int c = 0 ; c < length ; c++ )
{
for( i = 3 ; i <= length - c ; i++ )
{
String sub = str.substring(c, c+i);
System.out.println(sub);
if(sub.charAt(0) == sub.charAt(sub.length()-1)){
count++;
}
}
}
【问题讨论】:
-
当你只需要第一个和最后一个字符时,为什么要生成子字符串?既然你可以计算每个字符被复制了多少次,你为什么还要这样做呢?