美文网首页
2311. 小于等于 K 的最长二进制子序列

2311. 小于等于 K 的最长二进制子序列

作者: 来到了没有知识的荒原 | 来源:发表于2022-07-09 11:23 被阅读0次

2311. 小于等于 K 的最长二进制子序列

丑陋的代码,边界问题改半天

class Solution {
public:
    int calc(string s){
        int x = 0;
        for(auto c: s){
            x <<= 1;
            if(c=='1') x+=1;
        }
        return x;
    }
    int longestSubsequence(string s, int k) {
        int one = 0, zero = 0;
        int n = s.size();

        if(n > 31) {
            for(int i = 0; i < n - 31; i++ ) {
                if(s[i] == '1') one++;
            }
            s = s.substr(n-31);
        }
        int cur = calc(s);
        if(cur<=k) return n - one;
        for(int i =0; i < s.size(); i++) {
            cur = calc(s.substr(i));
            if(cur <= k) return n - one;
            if(s[i] == '1') one++;
        }
        return 0;
    }
};

相关文章

  • 2311. 小于等于 K 的最长二进制子序列

    2311. 小于等于 K 的最长二进制子序列[https://leetcode.cn/problems/longe...

  • 公共子序列问题

    最长公共子序列 最长上升子序列 最长公共上升子序列

  • 算法笔记

    子序列 LC128. 最长连续序列 TOPK LC347. 最K个高频元素 LC347. 前K个高频元素 LC21...

  • 和小于k的最长连续子串

    问题 已知一个长度为n的数组(允许负数), 和一个整数k, 求:和小于k的最长连续子串? 例如: k=184, A...

  • 算法(04)动态规划

    零钱问题 背包问题 最长公共子序列 最长公共子串 最长上升子序列 最大连续子序列和

  • LintCode 最长上升子序列

    给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 说明 最长上升子序列的定义: 最长上升子序列问...

  • LintCode 最长上升子序列

    题目 给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 说明最长上升子序列的定义:最长上升子序列...

  • 子序列问题

    最长公共子序列 最长上升/下降/不升/不降子序列

  • 最长公共子序列和最长公共子串

    最长公共子序列和最长公共子串区别 最长公共子串(Longest CommonSubstring)和最长公共子序列(...

  • LintCode 最长上升子序列

    题目 给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。说明最长上升子序列的定义:最长上升子序列问...

网友评论

      本文标题:2311. 小于等于 K 的最长二进制子序列

      本文链接:https://www.haomeiwen.com/subject/vnwvbrtx.html