求两个串的最大子序列(非字串)

问题:求两个串的最大子序列(并非连接的)

Java代码:

import java.util.Set;
import java.util.StringJoiner;

public class Main {
    public static int getL(String a, String b) {
        if (a.isEmpty()||b.isEmpty())
            return 0;
        if (a.charAt(0) == b.charAt(0))
            return getL(a.substring(1), b.substring(1)) + 1;
        else
            return Math.max(getL(a.substring(1), b), getL(a, b.substring(1)));
    }

    public static void main(String[] args) {
        int result = getL("abcfsdgsdgas", "xbaebcdasdasfasfdw");
        System.out.println(result);
    }
}
时间: 2024-10-05 10:31:19

求两个串的最大子序列(非字串)的相关文章

基础dp Max Subsring Plus HDU-1024 最大字串升级版之最大多字串

http://acm.hdu.edu.cn/showproblem.php?pid=1024 题意:有一个含n个数的序列,找到m个子序列,使这m个子序列的和最大. 分析:先用状态 dp[ i ][ j ] 表示前 j 个数取出 i 段所得到的最大值. 可以知道,对于下一个数,有以下三种操作: 1.不取这个数 . 2.取这个数并当作上一段的尾巴. 3.取这个数并当作新一段的头部. 对于这三种操作,状态转移方程为: $ dp[ i ][ j ]=max ( dp[ i ][ j-1 ] , dp[ 

最长公共子序列与最长公共字串

显然最长公共子序列不一定需要连续的,只要字符的顺序严格递增即可.最长公共字串需要字符连续 子序列代码: package test; import java.util.*; /* * 本题是求最长公共子序列,子序列未必连续,只需要严格递增即可 * 如 abcdeeeeeeeee和atttbggcd 最长公共子序列为abcd 长度为4 * * */ public class Main4{ public static void main(String... args){ try(Scanner in

最长递归子序列、最长公共字串、最长公共子序列、编辑距离

[TOC]   ### 最长递归子序列 #### 题目 给定数组arr,返回arr中的最长递增子序列,如`arr=[2,1,5,3,6,4,8,9,7]`,返回的最长递增子序列为`[1,3,4,8,9]` #### 题解思路 先用DP来求解子序列递增的最大长度,如arr的长度序列为`dp=[1,1,2,2,3,3,4,5,4]`,然后对这个长度序列dp从右到左遍历,得到最长递增子序列. 1. 求解长度序列,令dp[i]表示在以arr[i]这个数结尾的情况下,arr[0...i]中的最大递增子序列

poj2406 kmp 求最小循环字串

Power Strings Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 47748   Accepted: 19902 Description Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc" and b = "def" then a*b = "

洛谷OJ P1032 字串变换 解题报告

洛谷OJ P1032 字串变换 解题报告 by MedalPluS   [题目描述] 已知有两个字串 A$, B$ 及一组字串变换的规则(至多6个规则): A1$ -> B1$ A2$ -> B2$ 规则的含义为:在 A$中的子串 A1$ 可以变换为 B1$.A2$ 可以变换为 B2$ …. 例如:A$='abcd' B$='xyz' 变换规则为: ‘abc’->‘xu’ ‘ud’->‘y’ ‘y’->‘yz’ 则此时,A$ 可以经过一系列的变换变为 B$,其变换的过程为:

NOIP2002 字串变换

题二 字串变换 (存盘名: NOIPG2) [问题描述]: 已知有两个字串 A$, B$ 及一组字串变换的规则(至多6个规则): A1$ -> B1$ A2$ -> B2$ 规则的含义为:在 A$中的子串 A1$ 可以变换为 B1$.A2$ 可以变换为 B2$ …. 例如:A$='abcd' B$='xyz' 变换规则为: ‘abc’->‘xu’ ‘ud’->‘y’ ‘y’->‘yz’ 则此时,A$ 可以经过一系列的变换变为 B$,其变换的过程为: ‘abcd’->‘x

c#调用dll接口传递utf-8字串方法

1. 起源: VCU10之视频下载模块,采用纯python实现,c++代码调用pythonrun.h配置python运行环境启动python模块,以使界面UI能够使用其中功能. 棘手问题!用去一天时间反复打印日志,验证所传字串区别,以期望发现问题定位问题,直至下班前始有灵感. 验证发现,非中文字符可以正常下载,中文字符下载解析失败,当时即想到可能是字串不统一所致,就在python代码中做字串转换处理,均不奏效. 原接口封装代码如下: [DllImport("VideoDownloader&quo

NOIP2002 字串变换题解(双向搜索)

65. [NOIP2002] 字串变换 时间限制:1 s   内存限制:128 MB [问题描述] 已知有两个字串A$, B$及一组字串变换的规则(至多6个规则): A1$ -> B1$ A2$ -> B2$ 规则的含义为:在A$中的子串A1$可以变换为B1$.A2$可以变换为B2$-. 例如:A$='abcd'  B$='xyz' 变换规则为:'abc'->'xu' 'ud'->'y' 'y'->'yz' 则此时,A$可以经过一系列的变换变为B$,其变换的过程为: 'abc

QuickText | 热字串自动替换

分类: 办公支持    版本: 0.0.1    发布日期: 2015-07-09 热字串自动替换生成工具,根据指定的条件(选项)快速生成热字串脚本:Hotstring.ahk 功能简介 两栏窗口,左侧为热字串选项设置,右侧为热字串编辑列表 热字串选项支持“全局选项”及“独立选项” “独立选项”覆盖“全局选项”设置 如要设置独立选项,需选中“独立选项”单选按钮 启用“独立选项”时,可实时生成选项代码 未安装 AutoHotkey.exe 时,执行脚本需自带 Hotstring.exe 程序 热字