添加字符(牛牛手里有一个字符串A,羊羊的手里有一个字符串B,B的长度大于等于A,所以牛牛想把A串变得和B串一样长,这样羊羊就愿意和牛牛一起玩了。)

添加字符

题目描述

牛牛手里有一个字符串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
  
* */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值