如何在Java中使用二进制搜索来查找用户给出的两个字符串之间有多少字符串?我有一个大文本文件来搜索。 我在想((单词位置2 - 单词位置1)-1)会从数组中给出位置,但我不太确定如何将其放入代码中。检查完文件后,我卡住了。
String[] allWords = new String[400000];
int wordCount = 0;
Scanner input = new Scanner(new File("C:\\text.txt"));
while (input.hasNext()) {
String word = input.next();
allWords[wordCount] = word;
wordCount++;
System.out.println(wordCount);
}
Scanner sc = new Scanner(new File("C:\\text.txt"));
while(sc.hasNextLine()){
String in = sc.nextLine();
System.out.println("Enter a string:");
Scanner sc2 = new Scanner(System.in);
String str = sc2.nextLine();
System.out.println("Enter a string:");
Scanner sc3 = new Scanner(System.in);
String str2 = sc3.nextLine();
if (str.contains(str)) {
System.out.println("yes");
}
if (str.contains(str2)) {
System.out.println("yes");
}
答案 0 :(得分:0)
你的数学是正确的。正如你所推测的那样,从位置的差异中减去一个。如果您对代码有任何疑问,请将您的尝试发布到您的问题中。
答案 1 :(得分:0)
你可以试试像这样的伪代码。
int start
int end
a = startingString
b = startingString
String[] lines = StringFromFile.split("\n");
for(x in lines)
if(x=a)
start = position of x
for(x in lines)
if(x=b)
end = position of x
String[] newLines = Arrays.copyOfRange(lines, start,end)
return newLines.length