添加字符
题目描述
牛牛手里有一个字符串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++;}}
// 如果是子串的话,肯定为0min = Math.min(min, tmp);if (min == 0) {break;}}System.out.println(min);}}}
/*
adaabc
aababbc
2* */