ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

leetcode524 通过删除字母匹配到字典里最长单词

2022-05-04 14:00:32  阅读:111  来源: 互联网

标签:cur int 字典 单词 length vector leetcode524 dp string


思路:

双指针+序列自动机优化。

实现:

 1 class Solution
 2 {
 3 public:
 4     bool check(string&s,string&t,vector<vector<int>>&dp){
 5         int n=s.length(),m=t.length();
 6         int cur=0;
 7         for(int i=0;i<m;i++){
 8             if(cur>=n)return false;
 9             cur=dp[cur][t[i]-'a'];
10             if(cur==n)return false;
11             cur++;
12         }
13         return true;
14     }
15     string findLongestWord(string s, vector<string>& dictionary)
16     {
17         string res="";
18         int n=s.length();
19         vector<vector<int>>dp(n,vector<int>(26,n));
20         dp[n-1][s[n-1]-'a']=n-1;
21         for(int i=n-2;i>=0;i--){
22             for(int j=0;j<26;j++){
23                 dp[i][j]=dp[i+1][j];
24             }
25             dp[i][s[i]-'a']=i;
26         }
27         for(int i=0;i<dictionary.size();i++){
28             string t=dictionary[i];
29             int p=t.length();
30             if(p>n)continue;
31             if(check(s,t,dp)){
32                 int p=t.length(),q=res.length();
33                 if(p>q or (p==q and t<res)){
34                     res=t;
35                 }
36             }
37         }
38         return res;
39     }
40 };

标签:cur,int,字典,单词,length,vector,leetcode524,dp,string
来源: https://www.cnblogs.com/wangyiming/p/16220961.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有