美文网首页
(周赛t4)5893. 含特定字母的最小子序列

(周赛t4)5893. 含特定字母的最小子序列

作者: 来到了没有知识的荒原 | 来源:发表于2021-10-03 16:38 被阅读0次

5893. 含特定字母的最小子序列

坑神题解

const int N = 1e5 + 10;
int nxt[N][26];
int cnt[N];

class Solution {
 public:
  string smallestSubsequence(string s, int k, char letter, int repetition) {
    memset(nxt, -1, sizeof nxt), memset(cnt, 0, sizeof cnt);
    int n = s.size();
    for (int i = n - 1; i >= 0; i--) {
      cnt[i] = cnt[i + 1];
      if (s[i] == letter) cnt[i]++;
      for (int j = 0; j < 26; j++) nxt[i][j] = nxt[i + 1][j];
      nxt[i][s[i] - 'a'] = i;
    }
    string ans;
    int cur = 0, p = 0;
    for (int i = 0; i < k; i++) {
      for (char c = 'a'; c <= 'z'; c++) {
        int pos = nxt[p][c - 'a'];
        if (pos == -1) continue;
        if (cur + cnt[pos] >= repetition &&
            cur + (c == letter) + k - i - 1 >= repetition &&
            k - i - 1 <= n - pos - 1) {
          ans += c;
          cur += c == letter;
          p = pos + 1;
          break;
        }
      }
    }
    return ans;
  }
};

相关文章

  • (周赛t4)5893. 含特定字母的最小子序列

    5893. 含特定字母的最小子序列[https://leetcode-cn.com/problems/smalle...

  • Missing letters

    从传递进来的字母序列中找到缺失的字母并返回它。 如果所有字母都在序列中,返回 undefined。

  • fasta格式大小写转换

    对于序列是大写字母的fa文件若将序列转换为小写字母命令 小写字母转换大写字母

  • Missing letters--从字母序列中找到缺失的字母

    问题: FreeCodeCamp--从传递进来的字母序列中找到缺失的字母并返回它。 如果所有字母都在序列中,返回 ...

  • FCC-Missing Letters

    从传递进来的字母序列中找到缺失的字母并返回它。如果所有字母都在序列中,返回 undefined。fearNotLe...

  • FreeCodeCamp记录8

    从传递进来的字母序列中找到缺失的字母并返回它。 如果所有字母都在序列中,返回 undefined。 实现思路,对字...

  • FCC 题目 Missing letters

    要求 从传递进来的字母序列中找到缺失的字母并返回它。 如果所有字母都在序列中,返回 undefined。 提示 源代码

  • FreeCodeCamp筆記之:Missing letters

    题目 从传递进来的字母序列中找到缺失的字母并返回它。如果所有字母都在序列中,返回 undefined。如果你被卡住...

  • 基因组注释①:LTR_Finder的安装与使用

    重复序列注释 “由于物种间重复序列的保守性相对较低,针对特定的物种进行重复序列的预测时需要构建特定的重复序列数据库...

  • C-杂记

    三字母序列

网友评论

      本文标题:(周赛t4)5893. 含特定字母的最小子序列

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