[アルゴリズム]Java/標準/共通部分文字列/5582
[アルゴリズム]Java/標準/共通部分文字列/5582
質問する
質問リンク
方法
2 D配列を作成し、1番目の文字列の長さと2番目の文字列の長さを行列とし、各セルで1番目の文字列の文字と2番目の文字列の文字を比較します.同時に、前の行、前の列の値に1を加えた値を現在の値に格納します.
if str.char(i) == str.char(j) => dp[i][j] = dp[i-1][j-1]
この式は、文字列1と2を比較することを意味し、文字列1のiの最初の文字と文字列2のjの2番目の文字が同じである場合、各文字列は前の文字の共通部分の文字列長に1を加えて現在の文字に格納されるコード#コード#
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main_5582 {
public static void main(String[] args)throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str1 = " " + br.readLine();
String str2 = " " + br.readLine();
int[][] dp = new int[str1.length()][str2.length()];
int max = 0;
for(int i=1;i<str1.length();i++) {
for(int j=1;j<str2.length();j++) {
if(str1.charAt(i) == str2.charAt(j)) {
dp[i][j] = dp[i-1][j-1] + 1;
max = Math.max(dp[i][j], max);
}
}
}
System.out.println(max);
}
}
Reference
この問題について([アルゴリズム]Java/標準/共通部分文字列/5582), 我々は、より多くの情報をここで見つけました https://velog.io/@gandi0330/알고리즘-Java-백준-공통-부분-문자열-5582テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol