1.添加字符
牛牛手里有一个字符串A,羊羊的手里有一个字符串B,B的长度大于等于A,所以牛牛想把A串变得和B串一样长,这样羊羊就愿意和牛牛一起玩了。
而且A的长度增加到和B串一样长的时候,对应的每一位相等的越多,羊羊就越喜欢。比如"abc"和"abd"对应相等的位数为2,为前两位。
牛牛可以在A的开头或者结尾添加任意字符,使得长度和B一样。现在问牛牛对A串添加完字符之后,不相等的位数最少有多少位?
输入描述:
第一行为字符串A,第二行为字符串B,A的场地小于等于B的长度,B的长度小于等于50.字符均为小写字母。
输出描述:
输出一个整数表示A串添加完字符之后,不相等的位数最少有多少位?
输入例子:
abe
cabc
输出例子:
1
分析:
if(A长==B长){
一一对比
}
else{
eg1:
S1.abe 0
cabc
S2. abe 2
cabc
abe
cabchh 0
abe 2
cabchh
abe 0
cabchh
abe 0
cabchh
eg2:
S1.abc equel:0
forabchello
S2. abc
forabchello 0
S3. abc
forabchello 0
S4. abc
forabchello 3
S5. abc
forabchello 0
S6. abc
forabchello 0
S7. abc
forabchello 0
S8. abc
forabchello 0
S9. abc
forabchello 0
B-(B-A+MAXequel)
}
```java
import java.util.Scanner;
public class test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s1=new Scanner(System.in);
System.out.println("请输入字符串A:");
String str1=s1.nextLine();
Scanner s2=new Scanner(System.in);
System.out.println("请输入字符串B:");
String str2=s2.nextLine();
// System.out.println(str1);
// System.out.println(str2);
int num=0;
int maxNum=0;
int equal=0;
if (str1.length()==str2.length()) {
for (int i = 0; i < str1.length(); i++) {
if(str1.charAt(i)!=str2.charAt(i)) {
++num;
}
}
} else {
for (int i = 0; i <= str2.length()-str1.length(); i++) {//当A,B字符右对齐时停止比较
int k=i;
for (int j = 0; j < str1.length(); j++,++k) {
if (str2.charAt(k)==str1.charAt(j)) {
++equal;
}
}
maxNum=max(maxNum,equal);
equal=0;
}
num=str2.length()-(maxNum+(str2.length()-str1.length()));
}
System.out.println(num);
}
private static int max(int num, int equal) {
// TODO Auto-generated method stub
if (num>=equal) {
return num;
}
return equal;
}
}
请输入字符串A:
abe
请输入字符串B:
cabc
1