美团2017 JAVA
[编程题]大富翁游戏
[编程题]拼凑钱币
[编程题]最大矩形面积
[编程题]最长公共连续子串
这道题其实我以前做过,但是这次碰到却一直想不起来,非常难受,交卷后看评论里的动态规划就立马明白了,下面是代码。
stream特性是真的好用,一旦拥有,爱不释手。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
int max=0;
public static void main(String[] args){
Main s=new Main();
Scanner in=new Scanner(System.in);
String s1=in.nextLine();
String s2=in.nextLine();
int len1=s1.length();
int len2=s2.length();
int dp[]=new int[len2+1];
for (int i=1;i<=len1;i++){
for(int j=len2;j>=1;j--){
if (s1.charAt(i-1)==s2.charAt(j-1)){
dp[j]=dp[j-1]+1;
}else{
dp[j]=0;
}
}
int cur = Arrays.stream(dp).max().getAsInt();
if (cur>s.max) s.max=cur;
}
System.out.println(s.max);
}
}