描述 |
详细描述:
接口设计及说明: /*****************************************************************************
|
---|---|
知识点 | 字符串 |
运行时间限制 | 10M |
内存限制 | 128 |
输入 | 输入两个字符串 |
输出 | 返回重复出现的字符 |
样例输入 | abcdefghijklmnop abcsafjklmnopqrstuvw |
样例输出 | jklmnop |
<pre name="code" class="java">import java.util.*;
//asdfas werasdfaswer
public class test{
public static void main(String[] args){
Scanner sc=new Scanner (System.in);
while(sc.hasNext()){
String s1=sc.next();
String s2=sc.next();
System.out.println(match(s1,s2));
}sc.close();
}
private static String match(String s1,String s2){
int[][] arr=new int[s1.length()+1][s2.length()+1];
int end=0,length=0;
for(int i=0;i<s1.length();i++){
for(int j=0;j<s2.length();j++){
if(s1.charAt(i)==s2.charAt(j)){
arr[i+1][j+1]=arr[i][j]+1;
}else{
arr[i+1][j+1]=0;
//arr[i+1][j+1]=Math.max(arr[i][j+1], arr[i+1][j]);
}
if(arr[i+1][j+1]>length){
length=arr[i+1][j+1];
end=i+1;
}
}}
//ad da
if(length==0){return null;}else{return s1.substring(end-length,end);}
}
}
* 动态转移方程为:
* 如果xi == yj, 则 c[i][j] = c[i-1][j-1]+1
* 如果xi != yj, 那么c[i][j] = 0