9-14每日一题判断子序列

今天这道题我们可以先判断字典里有多少子序列然后 进行比较看最终符合条件的有哪些

1.判断是否是子序列   与力扣392题相同

class Solution {
public:
    bool isSubsequence(string s, string t) {
     int n=s.size();
     int m=t.size();
     int i=0,j=0;
     while(i<n && j<m){
         if(s[i]==t[j]){
             i++;
         }
         j++;
     }
     return i==n;
    }
};

 2.然后用临时变量比较存储 然后选择最终符合条件  //注意这里不是靠前而是整体删除靠前

class Solution {
public:
   bool ifsonlist(string p,string q){
       int m=p.size();
       int n=q.size();
       int i=0,j=0;
       while(i<m && j<n){
           if(p[i]==q[j]){
               j++;
           }
           i++;
       }
       return j==n;
   }
    string findLongestWord(string s, vector<string>& dictionary) {
        if(dictionary.size()==0) return " ";
        int j=0;
        int temp=0;//记录当前子序列长度
        string ans="";//记当前答案;
        for(auto d:dictionary){
          if(ifsonlist(s,d)){
                if(temp<d.size()){
                    temp=d.size();
                    ans=d;
                }
                else if(temp==d.size()){
                ans=(ans<d)?ans:d;
                }
               
            }
        }
        return ans;
    }
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值