将字符集合 {'b','p','q','d'}
视为“b系”。
算法:一次遍历字符串,判断每个字符是否属于该集合,属于则计数 +1。
相关算法要点:
# 功能函数:统计字符串中“b系”字符数量
def count_b_family(s: str) -> int:
bset = {'b', 'p', 'q', 'd'} # 固定集合,查找为O(1)
cnt = 0
for ch in s: # 线性扫描
if ch in bset:
cnt += 1
return cnt
if __name__ == "__main__":
# ACM 风格主函数:读入并输出
s = input().strip() # 输入为仅含小写字母的字符串
print(count_b_family(s))
import java.util.*;
/**
* ACM 风格:类名为 Main,主函数处理输入输出,
* 功能函数在外部实现。
*/
public class Main {
// 功能函数:统计“b系”字符数量
public static int countBFamily(String s) {
int cnt = 0;
for (char c : s.toCharArray()) { // 线性遍历
if (c == 'b' || c == 'p' || c == 'q' || c == 'd') {
cnt++;
}
}
return cnt;
}
public static void main(String[] args) {
// 默认数据量很小,使用 Scanner 足够
Scanner sc = new Scanner(System.in);
String s = sc.next().trim(); // 读入一行/一个单词
sc.close();
System.out.print(countBFamily(s));
}
}
#include <bits/stdc++.h>
using namespace std;
// 功能函数:统计“b系”字符数量
int countBFamily(const string &s) {
int cnt = 0;
for (char c : s) { // 线性遍历
if (c == 'b' || c == 'p' || c == 'q' || c == 'd') cnt++;
}
return cnt;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s;
if (cin >> s) { // 读入字符串
cout << countBFamily(s); // 输出计数
}
return 0;
}
字符 ′b’、′p’、′q’、′d’ 很有趣,它们旋转和翻转后可以完全相同!我们称它们为 [b系」字符。
现在给出一个长度为 3 的字符串,统计其中的「b系」字符的个数。
输入一个长度为 3、仅由小写字母构成的字符串 s。
输出一个整数,表示字符串 s 中「b系」字符的个数。
输入
bpq
输出
3
输入
xyz
输出
0