测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A25787. ABB形式的字符串:是由3个字符组成,其中后两个字符相同,第一个字符与后两个字符不同。如:"cbb"、"q22"、"688"都是 ABB 形式的字符串; "abc"、"wwe"、"pop"都不是 ABB 形式的字符串。子串:是指一个字符串中连续的一段字符序列。如:字符串“Hello,World!" 中,"Hello"、"ello"、"World"、"or"都是该字符串的子串。编程实现给定一个字符…

填空题 中等

题目描述

ABB形式的字符串:是由3个字符组成,其中后两个字符相同,第一个字符与后两个字符不同。

如:"cbb"、"q22"、"688"都是 ABB 形式的字符串;

  "abc"、"wwe"、"pop"都不是 ABB 形式的字符串。

子串:是指一个字符串中连续的一段字符序列。

如:字符串“Hello,World!" 中,"Hello"、"ello"、"World"、"or"都是该字符串的子串。

编程实现

给定一个字符串S,请统计S中有多少个ABB形式的子串, 以及多少种ABB形式的子串。

例如:S=“nnnseebbetoosee”,ABB形式的子串有see、 ebb、too、see,共4个;不同子串有see、ebb、too,共3种。

输入描述

输入一个长度不超过100的字符串S

输出描述

输出两个整数,分别表示S中有多少个ABB形式的子串,以及多少种ABB形式的子串,整数之间以一个空格隔开

样例输入

nnnseebbetoosee

样例输出

4 3

参考答案

#include <bits/stdc++.h> using namespace std; bool is_abb(string x) { if (x[0] != x[1] && x[1] == x[2]) return true; else return false; } int main() { string s; cin >> s; int ls = s.size(), ans = 0; map<string, int> ma; for (int i = 0; i <= ls - 3; i++) { if (is_abb(s.substr(i, 3))) { ans++; ma[s.substr(i, 3)]++; } } cout << ans << " " << ma.size(); return 0; }
上一题 下一题