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');
即可:
(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;
即可:
(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;
即可:
能想到这样的做法是因为在题的挑战(如果字符串太大而无法全部读入到内存中该怎么办?),尴尬的是这样的提交打败了 0.00% 的提交!
上一篇: LintCode 题目:两数之和
下一篇: lintcode:最长上升连续子序列