1 条题解
-
0
CF1671A.String Building
题目大意
题目描述
给出一个只有字母 和 的字符串 ,问能否用多个字符串
aa
,aaa
,bb
,bbb
组成这个字符串。输入格式
给出一个数 ,表示有 组测试用例。
接下来 行,每行一个字符串 。
输出格式
一共 行,每行都是
YES
或者NO
表示能否组成这个字符串。题目分析
由题意可得,将 分为 块。如果第 块有奇数个字符,并且字符数量多于 那么就再分,分为 块。多出来的一个字符可以给第 块,这样就会有 个字符串
aa
或bb
, 个字符串aaa
或bbb
。如果第 块有偶数个字符,那么就有 块aa
或bb
。但是无论如何第 块都必须有多于 个字符。如果有一块只有一个字符,那么它这个字符必定和前后不一样。所以我们只需要从 开始查找,判断这个字符和它前后的字符是否相同。
注意要判断 是否等于 ,否则如果出现如
abb
这样的数据就会给出错误结果,还有s.size()
是否等于 ,否则会Runtime Error
。时间复杂度 ,注意有 的处理。
代码
#include<bits/stdc++.h> using namespace std; void solve () { string s; cin >> s; if (s.size () == 1) { cout << "NO" << endl; return; } if (s [0] != s [1]) { cout << "NO" << endl; return; } for (int i = 1; i < s.size (); i ++) { if (s [i] != s [i - 1] && s [i] != s [i + 1]){ cout << "NO" << endl; return; } } cout << "YES" << endl; } int main () { int t; cin >> t; while (t --) { solve(); } return 0; }
- 1
信息
- ID
- 7820
- 时间
- 2000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者