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;
}
上一题
下一题