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

  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. java 通过数据库名获得 该数据所有的表名以及字段名、字段类型

    package com.nf.lc.sql_meta_data; import java.sql.*; import java.util.HashMap; import java.util.Map; ...

  2. pytorch的visdom启动不了、蓝屏

    pytorch的visdom启动不了.蓝屏 问题描述:我是在ubuntu16.04上用python3.5安装的visdom.可是启动是蓝屏:在网上找了很久的解决方案:有三篇博文: https://bl ...

  3. 跟随大神实现简单的Vue框架

    自己用vue也不久了,学习之初就看过vue实现的原理,当时看也是迷迷糊糊,能说出来最基本的,但是感觉还是理解的不深入,最近找到了之前收藏的文章,跟着大神一步步敲了一下简易的实现,算是又加深了理解. 原 ...

  4. 前端自动化构建工具gulp

    1.gulp的安装 首先确保你已经正确安装了nodejs环境.然后以全局方式安装gulp: npm install -g gulp 全局安装gulp后,还需要在每个要使用gulp的项目中都单独安装一次 ...

  5. 一句话看懂redux

    一个是存储在 store 里面的 state,另一个是每一次调用 dispatch 所传进来的 action.reducer 的作用,就是对 dispatch 传进来的 action 进行处理,并将结 ...

  6. Python 字符编码判断

    题记 在获取中文字符的时候,如果出现乱码的情况,我们需要了解当前的字符串的编码形式.使用下面两种方法可以判断字符串的编码形式. 法一: isinstance(s, str) 用来判断是否为一般字符串 ...

  7. 软件测试价值观-SMBT新理念

    软件测试价值观-SMBT新理念 作者:张元礼 http://blog.csdn.net/vincetest 近年来有不少软件测试同行不少有些困惑-软件测试人员的价值在哪里?我们怎么才能做好软件测试?怎 ...

  8. JSON parse error: Cannot deserialize value of type `java.util.Date` from String

    DateTimePicker + @DateTimeFormat("yyyy-MM-dd HH:mm:ss")日期格式转换异常 最近在做的一个项目使用的日期格式是yyyy-MM-d ...

  9. C++扬帆远航——6(三色球)

    /* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:sanseqiu.cpp * 作者:常轩 * 完成日期:2016 ...

  10. 小程序在ios10.2系统上兼容

    1.  定位元素在ios10.2系统上出现样式问题??? 没错,就是在测试在侧道ios10.2系统时发现了样式错误的问题,比如一个Swiper中,最后一个展示有问题. 这是啥原因❓❓❓❓❓❓ 大写的问 ...