字符串的最长严格递增子序列,前后只能相差一个字符。

  1. 直接O(N^2)暴力建图,然后记忆化跑个最长路。
  2. 直接按字符串长度排序,然后求LIS。

code1

class Solution {
public:
vector<int> g[1005];
bool check(string& a,string& b){
int as=a.size();
int bs=b.size();
if(bs!=as+1){
return false;
}
int cnt[26]={0};
for(int i=0;i<as;i++){
cnt[a[i]-'a']++;
}
for(int i=0;i<bs;i++){
cnt[b[i]-'a']--;
}
for(int i=0;i<26;i++){
if(cnt[i]!=0 && cnt[i]!=-1){
return false;
}
}
return true;
}
int dp[1005];
void dfs(int u){
if(dp[u]){
return;
}
int ans=0;
int siz=g[u].size();
for(int i=0;i<siz;i++){
int v=g[u][i];
dfs(v);
ans=max(ans,dp[v]);
}
dp[u]=ans+1;
return;
}
int longestStrChain(vector<string>& words) {
int n=words.size();
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(check(words[i],words[j])){
cout << i <<" " <<j <<"\n";
g[i].push_back(j);
}
}
}
for(int i=0;i<n;i++){
dfs(i);
}
int ans=0;
for(int i=0;i<n;i++){
ans=max(ans,dp[i]);
}
return ans;
}
};

code2

bool cmp(string a,string b){
return a.size()<b.size();
}
class Solution {
public:
bool check(string& a,string& b){
int as=a.size();
int bs=b.size();
if(bs!=as+1){
return false;
}
int cnt[26]={0};
for(int i=0;i<as;i++){
cnt[a[i]-'a']++;
}
for(int i=0;i<bs;i++){
cnt[b[i]-'a']--;
}
for(int i=0;i<26;i++){
if(cnt[i]!=0 && cnt[i]!=-1){
return false;
}
}
return true;
}
int dp[1005];
int longestStrChain(vector<string>& words) {
int n=words.size();
sort(words.begin(),words.end(),cmp);
int ans=0;
for(int i=0;i<n;i++){
dp[i]=1;
}
for(int i=1;i<n;i++){
for(int j=0;j<i;j++){
if(check(words[j],words[i])){
dp[i]=max(dp[i],dp[j]+1);
}
}
ans=max(ans,dp[i]);
}
return ans;
}
};

Leetcode_1048. 最长字符串链的更多相关文章

  1. 使用List把一个长字符串分解成若干个短字符串

    把一个长字符串分解成若干个固定长度的短字符串,由于事先不知道长字符串的长度,以及短字符串的数量,只能使用List. public static void get_list_sbody(String s ...

  2. eclipse处理长字符串拼接快捷方法类

    情景: 你在后台写sql文访问数据库时是不是要这样写 String sql="select a," +"b," +"c " +"f ...

  3. JSP-简单的练习省略显示长字符串

    <%@ page contentType="text/html; charset=gb2312" %> <!-- JSP指令标签 --> <%@ pa ...

  4. newcoder-最长树链-树/gcd

    https://ac.nowcoder.com/acm/problem/13233 链接:https://ac.nowcoder.com/acm/problem/13233来源:牛客网 题目描述 树链 ...

  5. python-原始字符串,长字符串

    一  长字符串 在python中要表示跨行多行的字符串,可以使用较为简单粗暴的表达-----三引号.例如: str = ”’那时我们有梦, 关于文学, 关于爱情, 关于穿越世界的旅行. 如今我们深夜饮 ...

  6. Java & PHP & Javascript 通用 RSA 加密 解密 (长字符串)

    系统与系统的数据交互中,有些敏感数据是不能直接明文传输的,所以在发送数据之前要进行加密,在接收到数据时进行解密处理:然而由于系统与系统之间的开发语言不同. 本次需求是生成二维码是通过java生成,由p ...

  7. C 长字符串换行方法

    C中字符串有时候会出现很长的情况,如果不换行书写查看起来很不方便. 长字符串拆分成多行处理也是C规范的一部分. 方法1. 利用双引号" " ,将长字符串分成多个子串换行,C会自动无 ...

  8. HDU 3336 输出包括从1到len长 字符串前缀的总个数(+DP)

    Sample Input14abab Sample Output6输出包括从1到len长 字符串前缀的总个数abab:包括2个a,2个ab,1个aba,1个abab # include <cst ...

  9. go语言判断末尾不同的长字符串的方法

    判断两种末尾不同的长字符串,在使用正则表达式的基础上,进一步利用好字符串的方法,最后成功对问题进行解决. package utils import ( "io/ioutil" &q ...

随机推荐

  1. Ubuntu和window10 安装双系统

    先安装window10,然后空出一部分储存空间,我空出来了103G. 然后安装ubuntu分区的时候注意: 刚开始安装的时候:出现安装类型的时候:选择其他选项: 在分区的时候:单击127117(这里是 ...

  2. 使用pandas,numpy进行数据分析建模的一些常用命令

    1.读取文件为pandas格式: import pandas as pd import numpy as np dataset = pd.read_csv("C:/Users/Adminis ...

  3. python——pymysql的安装

    pymysql是python程序连接mysql数据库的的第三方库,通过运行import pymysql 查看系统中是否有该模块,没有的话需要自行安装. 安装教程如下: 1.下载pymysql安装包,下 ...

  4. 5G-NR物理信道与调制-下行链路v1.1.0

    上接<5G-NR物理信道与调制v1.1.0>下行链路 References Definitions, symbols and abbreviations 帧结构与物理资源 通用函数 上行链 ...

  5. RPi.GPIO 和 HM

    后续笔记不再记录导入的模块和硬件的连接方法,请根据关键词自行搜索. RPi.GPIO模块 GPIO:General Purpose Input Output 即 通用输入/输出 RPi.GPIO是一个 ...

  6. 阿里云ESC学生服务器搭建springboot项目生产环境(Mysql+JDK)不需要上传安装包

    嗯,之前服务器被挖矿的病毒弄的登录不进去了,所以联系了阿里云客服,提交工单,最后建议重置,所以我就重置了, 嗯,学习经验,docker如果懂的不是太多,不要随便云部署,都给别人挖矿了.   Mysql ...

  7. Java入门教程四(字符串处理)

    Java 语言的文本数据被保存为字符或字符串类型.字符及字符串的操作主要用到 String 类和 StringBuffer 类,如连接.修改.替换.比较和查找等. 定义字符串 直接定义字符串 直接定义 ...

  8. 【WPF学习】第五十六章 基于帧的动画

    除基于属性的动画系统外,WPF提供了一种创建基于帧的动画的方法,这种方法只使用代码.需要做的全部工作是响应静态的CompositionTarge.Rendering事件,触发该事件是为了给每帧获取内容 ...

  9. 全差分运算放大器ADA4930的分析(1)

    AD转换芯片的模拟信号输入端方式为:全差分.伪差分.单端输入,其中全差分输入的效果最佳,现阶段ADC转换器为了提高其性能,建议用户使用全差分的输入方式.(AD7982.ADS8317等都能实现信号的全 ...

  10. IIS6.0文件解析漏洞和短文件名漏洞复现

    一.IIS6.0文件解析漏洞 1.ASP一句话木马的准备 新建木马文件“muma.txt”,将“我asp是一句话木马:<%eval request("asp")%>”写 ...