在文本文件中搜索两个字符串,并显示其间有多少个字符串

时间:2017-03-28 21:51:43

标签: java arrays performance binary-search

如何在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");

    }

2 个答案:

答案 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