[BaekJoon]1120文字列
1. 質問リンク
https://www.acmicpc.net/problem/1120
2. 質問する
サマリ
長さがと異なる文字列A、Bがあり、Aの前にBの長さに等しいまでアルファベットを追加したり、後にアルファベットを追加したりして、Bとの差が最も小さい差を求めます.ここで、差分は、同一位置に存在する文字の差分数である. 入力:AとBの最大長は50で、アルファベット小文字のB以下です. 出力:AをBとの差の最大値に変換します. 3. ソースコード Aの長さがBの長さと等しい場合、Aはこれ以上変形できないので、文字列AとBの差を求める.この差は最大値です. Aの長さがBの長さより小さい場合、Aとの差が最も小さい位置は、現在のBの文字列で検索される. は、Aの間に文字を追加することができず、与えられたAの前後に文字を追加することができるので、Aの前後はBに完全に一致することができるからである.ただし、Aが中間に文字を追加できない場合、A文字列はB文字列と完全に整列できず、A文字列はB文字列と完全に整列しなければならないため、A文字列とB文字列の差が最も小さい場合、A文字列とB文字列の差が最も大きい. 上記の方法を使用して、B文字列のうちA文字列との差が最も小さい位置を検索し、その値を出力する.
https://www.acmicpc.net/problem/1120
2. 質問する
サマリ
長さが
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public int findMinDif(String a, String b) {
if(a.length() == b.length()) {
int count = 0;
for(int i = 0; i < a.length(); i++) {
if(a.charAt(i) != b.charAt(i)) {
count++;
}
}
return count;
}
int diff = Integer.MAX_VALUE;
int length_dif = b.length() - a.length() + 1;
for(int i = 0; i < length_dif; i++) {
int count = 0;
for(int j = 0; j < a.length(); j++) {
if(a.charAt(j) != b.charAt(i + j)) {
count++;
}
}
if(diff > count) {
diff = count;
}
}
return diff;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
StringTokenizer st = new StringTokenizer(input);
String a = st.nextToken();
String b = st.nextToken();
Main m = new Main();
System.out.println(m.findMinDif(a, b));
}
}
4. に近づくReference
この問題について([BaekJoon]1120文字列), 我々は、より多くの情報をここで見つけました https://velog.io/@taeho97/BaekJoon-1120-문자열テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol