for(int j = 1;j<fileArray.size();j++) {
if(str.contains(fileArray.get(end+j))) {
}
}
(假设结束是某个数字,如30)。 这部分的目标是当窗口长度为30且fileArray大小> gt时。 30,检查索引30后是否有任何东西与窗口内的内容相匹配。 前:&#34;我喜欢吃馅饼aaaabbbbpiesssbbbb&#34; 从字符串的开头开始,将前17个字符添加到名为window的arraylist中。然后我检查从窗口后面开始的其余字符串,看看是否有匹配的东西。空间不匹配,因此您将其添加到输出。继续检查然后你会看到&#34; piesss&#34;火柴。然后我更换第二个&#34; piesss&#34;随着第一个&#34; piesss&#34;发生。
所以现在我正在使用fileArray.get(end + j)来检查我的字符串(str)中是否有匹配的东西,除了这并不是真的有效。有没有办法可以修复这段代码?
答案 0 :(得分:0)
您问题的替换部分仍不清楚。正如使用ArrayList的任何理由一样。我已经写了一些代码,在分割你提供的字符串后,会在5个字符的窗口中搜索匹配。请注意,您给出的30和17值没有任何匹配(请参阅注释掉的代码)。但是,通过调整值,可以找到一些匹配。
public static void main(String[] args) {
// 1 2 3
//012345678901234567890123456789012345678 <- shows the index
String test = "i like to eat piesss aaaabbbbpiesssbbbb";
// int first = 17;
// int end = 30;
int first = 20;
int end = 37;
String firstHalf = test.substring(0, first);
String secondHalf = test.substring(first, end);
int matchSize = 5;
for (int i = 0; i + matchSize < secondHalf.length() ; i++)
{
String window = secondHalf.substring(i, i + matchSize);
if ( firstHalf.contains(window) )
{
System.out.println(window);
}
}
System.out.println("Done searching.");
}
显示器:
piess
iesss
Done searching.
如果这不符合您的意思,请编辑您的问题以明确您的需求。