字节测开|笔试第二题|求助
分4种情况,过了70%,也不知道问题出在哪,想看看大家怎么写的
import java.util.Scanner; public class test2 { public static int flag; public static String a; public static String b; public static int i; public static int j; public static int t; public static void main(String[] args) { Scanner input = new Scanner(System.in); a = input.next(); b = input.next(); flag =1; //step0:第0个就不同: if(flag==1&&a.charAt(0)!=b.charAt(0)){ a=b.charAt(0)+a.substring(1,a.length()); flag--; } //step1 最后1个就不同: if(flag==1&&a.charAt(i)!=b.charAt(j)){ a=a.substring(0,i)+b.charAt(j); flag--; } int m = beforefind(); int n = afterfind(); int res=m*n; //step2 if(flag==1&&i>=0&&j>0&&a.charAt(i)!=b.charAt(j)){ a=a.substring(0,i)+b.charAt(i)+a.substring(i+1,a.length()); flag--; } m = beforefind(); n = afterfind(); res = Math.max(res,m*n); //step3 if(flag==1&&t<Math.min(a.length()-1,b.length()-1)&&a.charAt(t)!=b.charAt(t)){ a=a.substring(0,t)+b.charAt(t)+a.substring(t+1,a.length()); flag--; } m = beforefind(); n = afterfind(); res = Math.max(res,m*n); System.out.println(res); } public static int beforefind(){ int length = Math.min(a.length(),b.length()); int m=0; for(t=0;t<length;t++){ if(a.charAt(t)==b.charAt(t)){ m++; }else{ break; } } return m; } public static int afterfind(){ int n=0; i =a.length()-1; j =b.length()-1; while (i>=0&&j>=0&&a.charAt(i)==b.charAt(j)){ n++; j--; i--; } return n; } }