1. 程式人生 > >摩拜 [程式設計題] 字串問題

摩拜 [程式設計題] 字串問題

小摩手裡有一個字串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();
    }
}