摩拜 [程式設計題] 字串問題
阿新 • • 發佈:2018-11-10
小摩手裡有一個字串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(); } }