Алгоритм LCS, работающий через файл с 10 строками

У меня есть файл с 10 строками — каждая строка в 1 строке — и мне нужно запустить LCS и получить длину LCS и LCS каждого сравнения, например, String 1 со String 2, String 1 со String 3, String 1 со String 4 и так далее, пока не будет пройдена каждая строка, а затем она будет увеличиваться до строки 2 и повторять этот процесс до тех пор, пока не будет пройдена все строки.

Я успешно добавил каждую строку в ArrayList, чтобы упростить ее, но теперь у меня возникли проблемы с попыткой сравнить указанные строки друг с другом, я думаю, что мне следует использовать вложенный цикл for, в котором я не увеличиваю, пока он не пройдет весь список, затем он увеличивается.

Любая помощь приветствуется. И это код, который у меня есть до сих пор.

     public static void main(String[] args) {

        List<String> Collection = new ArrayList<>();
        String FirstLine = null;
        int i;

        File Temp1 = new File("CollectionSeqs/listSeqs-consensustest-errorhigh-l10.nsol_win.txt");

        try{
            InputStream fis = new FileInputStream(Temp1);
            BufferedReader br = new BufferedReader(new InputStreamReader(fis));

            for (String line = br.readLine(); line != null; line = br.readLine()) {
                Collection.add(line);
                System.out.println(line);
             }
            br.close();
        }
        catch(Exception e){
            System.err.println("Error: Target File Cannot Be Read");
        }

person StrugglingEngrStudent    schedule 12.04.2016    source источник


Ответы (1)


Вы правы в своем подходе к использованию вложенного цикла for. Вот как вы можете это сделать.

for(int i=0;i<Collection.size();++i)
{
  String s1=Collection.get(i);
  for(int j=i+1;j<Collection.size();++j)
  {
    String s2=Collection.get(j);
    run the LCS for string s1 and s2
  }
}
person Sumeet    schedule 12.04.2016
comment
Спасибо! Это определенно помогает! Я использовал .length() вместо .size() - person StrugglingEngrStudent; 13.04.2016