欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LintCode 题目:A的数量

程序员文章站 2022-03-24 17:38:32
...

URL:https://www.lintcode.com/problem/number-of-a/description

描述

给一个带有 B*A*C*D* 模式的字符串,* 意味着前面的字符在字符串中可以显示 0次多次。计算字符 'A' 出现的次数。

为了保证时间复杂度小于O(n),程序会重复执行 1000

样例

样例 1:

输入: s = "BBAACCDDD"
输出: 2

样例 2:

输入: s = "BBCDD"
输出: 0

样例 3:

输入: s = "AAA"
输出: 3

挑战

如果字符串太大而无法全部读入到内存中该怎么办?

 

(1)通过率:89%(使用count函数:函数count()和count_if()

在代码段中添加:

return count(s.begin(),s.end(),'A');

即可:

LintCode 题目:A的数量

 

(2)通过率:89%(for循环)

在代码段中添加:

int count = 0;
        int n = s.size();
        for (int i = 0; i < n; i++) {
            /* code */
            if(s[i]=='A')
                count++;
        }
        return count;

即可:

LintCode 题目:A的数量

 

(3)通过率:100%(两次循环)

在代码段中添加:

int count = 0;
        int n = s.size();
        for (int i = 0; i < n/2; i++) {
            /* code */
            if(s[i]=='A')
                count++;
        }
        for (int i = n/2; i < n; i++) {
            /* code */
            if(s[i]=='A')
                count++;
        }
        return count;

即可:

LintCode 题目:A的数量

能想到这样的做法是因为在题的挑战(如果字符串太大而无法全部读入到内存中该怎么办?),尴尬的是这样的提交打败了 0.00% 的提交!