版权声明:本文为博主-姜兴琪原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1370029
小摩手里有一个字符串A,小拜的手里有一个字符串B,B的长度大于等于A,所以小摩想把A串变得和B串一样长,这样小拜就愿意和小摩一起玩了。
而且A的长度增加到和B串一样长的时候,对应的每一位相等的越多,小拜就越喜欢。比如"abc"和"abd"对应相等的位数为2,为前两位。
小摩可以在A的开头或者结尾添加任意字符,使得长度和B一样。现在问小摩对A串添加完字符之后,不相等的位数最少有多少位?
输入描述:
第一行 为字符串A,第二行 为字符串B,
A的长度小于等于B的长度,B的长度小于等于100。
字符均为小写字母。
输出描述:
输出一行整数表示A串添加完字符之后,A B 不相等的位数最少有多少位?
输入例子1:
abe
cabc
输出例子1:
1
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String a = in.nextLine();
String b = in.nextLine();
char first=a.charAt(0);
char end=a.charAt(a.length()-1);
int a_len=a.length();
int b_len=b.length();
if(a_len==b_len){
int cnt=0;
for(int i=0;i<a_len;i++) {
char ch_a = a.charAt(i);
char ch_b = b.charAt(i);
if(ch_a!=ch_b){
cnt++;
}
}
System.out.println(cnt);
}else {
int i,j,k;
for(i=0;i<b_len;i++){
char ch = b.charAt(i);
if(first==ch){
break;
}
}
for(j=0,k=i;j<a_len&&k<b_len;j++,k++){
char ch_a = a.charAt(j);
char ch_b = b.charAt(k);
if(ch_a!=ch_b){
break;
}
}
int dis_head=a_len-j;
for(i=b_len-1;i>0;i--){
char ch = b.charAt(i);
if(end==ch){
break;
}
}
int dis_end;
if((b_len-i+1+a_len)>b_len){
dis_end=a_len;
}else {
for(j=a_len-1,k=i;j>0&&k>0;j--,k--){
char ch_a = a.charAt(j);
char ch_b = b.charAt(k);
if(ch_a!=ch_b){
break;
}
}
dis_end=j;
}
int min=0;
if(dis_head>dis_end){
min=dis_end;
}else{
min=dis_head;
}
System.out.println(min);
}
in.close();
}
}