自学内容网 自学内容网

LeetCode - 2207. 字符串中最多数目的子序列

题目链接:2207. 字符串中最多数目的子序列
在这里插入图片描述

思路

由于子序列长度只有2,所以要么首位插入队头,要么末位插入队尾,就能取得最大数目。

于是遍历一遍字符串,统计pattern[0]pattern[1] 的个数,两者取最大值,就是插入的字符组成的子序列个数。

那么我们应该如何在只遍历一遍的情况下得到原本字符串中的子序列个数(未插入情况下)呢?

  • 在统计pattern时,如果统计到pattern[1],就可以与前面的pattern[0]组合成若干子序列,数目为之前统计到的pattern[0]的个数。

CODE

long long maximumSubsequenceCount(char* text, char* pattern) {
    int num = strlen(text);
    long long ans = 0;
    long long con = 0;
    long long l = 0;
    long long r = 0;
for(const char* c = text; *c; ++c){
if(*c == pattern[1]){
con += l;
r++;
}
if(*c == pattern[0]){
l++;
}
}

return fmax(l, r) + con;
}

原文地址:https://blog.csdn.net/2301_78981471/article/details/142501847

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!