2 つの文字列の最長共通サブ シーケンスを実装しようとしています。私の方法は、ここに投稿されたものとは少し異なります。私は解決策に近づいていますが、ほとんど問題はありません。私を助けてください。
私の問題: 望ましい出力: メタリカ 現在の出力: etallica
私のコードは次のとおりです。
import java.util.ArrayList;
import java.util.Stack;
public class CommonSubS {
public static void main(String[] args) {
ArrayList<Character> ss = new ArrayList<>();
String s1 = "metallicarules";
String s2 = "rulmetallicales";
ArrayList<ArrayList<Character>> one = new ArrayList<>();
char[] first = s1.toCharArray();
char[] second = s2.toCharArray();
int j = 0;
int current = 0;
int mainIndex = 0;
ArrayList<Character> sec = new ArrayList<>();
// search for each char in second
for(int i = 0; i<second.length; i++)
{
j = current;
// search for each char in first
while(j<first.length)
{
// if match found, add to the arraylist
if(first[j] == second[i]){
sec.add(first[j]);
current = j+1;
break;
}
else
{ // if different char occured in between,
// save current arraylist in one
// and go forward
one.add(sec);
sec = new ArrayList<>();
j++;
current = 0;
}
}
}
for(ArrayList<Character> s: one)
{
for(Character c: s)
{
System.out.print(c);
}
System.out.println();
}
}
}
/*
desired output: metallica
current output: etallica
*/
他の方法があることは知っていますが、簡単な方法を使用して実装しようとしました。問題点を指摘してください。