线性搜索java中的给定字符串?还有更好的解决方案吗?

时间:2014-03-26 04:38:25

标签: java

很抱歉,如果我的问题很愚蠢,但我需要一些帮助。 好吧,问题是我正在尝试学习java并试图制作一个小程序 这将在文本文件中搜索已插入的匹配字符串 参数。我想知道我应该修复哪个程序部分以使方法正常工作,或者至少想知道是否有更好的解决方案。

 public String linaerSearch(String filename,String strToArrays){
        String[]arrays;
        File f = new File("C:\\Users\\toyman\\Documents\\NetBeansProjects\\ToyMaker\\"+filename);
       String[]items = (strToArrays.split("\\s*,\\s*"));//converting the string into arrays by comma

        //convert the int into string 
        StringBuilder build = new StringBuilder();
        if(f.exists()){ //checks if the file actually exists
        try(FileInputStream fis = new FileInputStream(f)){
            int con; int incrementor =0;
           while((con=fis.read())!=-1){ 
                incrementor++;

            char str = (char)con;
            String str2 = Character.toString(str);
            if(items[ ????? ].equals(str2)){   

        // I want to check if the string that has been passed in the parameter
        // exists in the file. But I got confused at the items[ ???? ].

                System.out.println("found you");
            }
                //System.out.println();
                //convert to char and display it
               System.out.print(str2);

            }

        }catch(Exception e){
            e.printStackTrace();
        }
        }else{
            System.out.println("The file doesn't exist. Create a new file or use a existing file");
        }




       return "";
    }

1 个答案:

答案 0 :(得分:1)

如果要在文本中搜索某些字符串并正确执行,则与Java无关。您正在寻找的是字符串搜索算法。

尝试查看维基百科:http://en.wikipedia.org/wiki/String_searching_algorithm

我建议选择:

  1. Rabin-Karp算法:http://en.wikipedia.org/wiki/Rabin%E2%80%93Karp_string_search_algorithm
  2. Knuth-Morris-Pratt算法:http://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm
  3. 它们都是非常好的高效算法,并且都很容易实现。