添加字符
题目描述
牛牛手里有一个字符串A,羊羊的手里有一个字符串B,B的长度大于等于A,所以牛牛想把A串变得和B串一样长,这样羊羊就愿意和牛牛一起玩了。
而且A的长度增加到和B串一样长的时候,对应的每一位相等的越多,羊羊就越喜欢。比如"abc"和"abd"对应相等的位数为2,为前两位。
牛牛可以在A的开头或者结尾添加任意字符,使得长度和B一样。现在问牛牛对A串添加完字符之后,不相等的位数最少有多少位?
输入描述:
第一行为字符串A,第二行为字符串B,A的场地小于等于B的长度,B的长度小于等于50.字符均为小写字母。
输出描述:
输出一个整数表示A串添加完字符之后,不相等的位数最少有多少位?
示例1
输入
abe
cabc
输出
1
参考
//链接:https://www.nowcoder.com/questionTerminal/b2b816e20e8343b49abbaf493886ce26?f=discussion
//来源:牛客网
import java.util.Scanner;
/*
不相等的位数最少有多少位?即对应相等的位数要最多,如果A是B的子串,A直接添加字符使得A=B即可,如果不是,结果为原始A和B不相等的个数
直接比较已有字符串中不相等的个数即可
*/
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String A = scanner.next();
String B = scanner.next();
int min = Integer.MAX_VALUE;
// 以A为模式串
for (int i = 0; i <= B.length() - A.length(); i++) {
int tmp = 0;
for (int j = 0; j < A.length(); j++) {
if (A.charAt(j) != B.charAt(i + j)) {
tmp++;
}
}
// 如果是子串的话,肯定为0
min = Math.min(min, tmp);
if (min == 0) {
break;
}
}
System.out.println(min);
}
}
}
/*
adaabc
aababbc
2
* */