牛客春招刷题训练营 3月25日 Java 查找两个字符串a,b中的最长公共子串 构造C的歪
目录
题目地址
查找两个字符串a,b中的最长公共子串
构造C的歪
#牛客春招刷题训练营# + 【春招神助攻】牛客刷题营开启:每日一题攒牛币,大厂offer不是梦!_牛客网
题目地址
构造C的歪_牛客题霸_牛客网
查找两个字符串a,b中的最长公共子串_牛客题霸_牛客网
查找两个字符串a,b中的最长公共子串
子串必须是连续的
那么 dp[i][j] 的状态只能由 dp[i-1][j-1] 得到
可以跟力扣上的最长公共子序列类比
差不多
可以做一下力扣 1143
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
String str1 = in.next();
String str2 = in.next();
// 输出在较短串里先出现的那一个
if(str1.length()>str2.length()){
String ans=str1;
str1=str2;
str2=ans;
}
int n=str1.length();
int m=str2.length();
int dp[][]=new int[n+5][m+5];
int max=0;
String str="";
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(str1.charAt(i-1)==str2.charAt(j-1)){
dp[i][j]=dp[i-1][j-1]+1;
}
if(dp[i][j]>max){
// 记录字符串
str=str1.substring(i-max-1,i);
max=Math.max(dp[i][j],max);
}
}
}
// System.out.println(max);
System.out.println(str);
}
}
构造C的歪
直接构造差 然后 相 加
构成等差数列
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
int a = in.nextInt();
int b = in.nextInt();
System.out.println(a+(a-b));
}
}