首页 > 试题广场 >

好串

[编程题]好串
  • 热度指数:8847 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}牛牛喜欢跟字符串玩耍,他学会了一种新操作:在当前字符串中任意位置(包括开头和结尾)插入子串 \texttt{ab}

\hspace{15pt}牛牛称一个字符串为 好串,当且仅当它可以通过若干次上述操作从 空串 生成。

\hspace{15pt}例如,\texttt{ab}\texttt{aabb}\texttt{aababb} 都是好串,而 \texttt{aab}\texttt{ba}\texttt{abbb} 不是好串。

\hspace{15pt}现给定一个字符串 s,请判断字符串 s 是否是好串。

输入描述:
\hspace{15pt}在一行中输入一个仅由小写字母组成字符串 s1 \leqq |s| \leqq 10^5)。


输出描述:
\hspace{15pt}如果字符串 s 是好串,输出 \texttt{Good};否则输出 \texttt{Bad}
示例1

输入

ab

输出

Good

说明

初始空串,插入一次 "ab" 即可得到 "ab"。
示例2

输入

aab

输出

Bad

说明

无法通过插入 "ab" 操作得到 "aab"。
示例3

输入

abaababababbaabbaaaabaababaabbabaaabbbbbbbb

输出

Bad

备注:

头像 Lausaku
发表于 2021-03-31 19:52:06
题目见描述思路:考察了对栈的理解运用:只要遇到a就入栈,遇到b就让a出栈,如果此时出现栈空则返回false,最后检查一下如果栈不为空也返回false代码: #include <iostream> #include <stack> #include <algorithm& 展开全文
头像 活泼泼
发表于 2021-04-15 23:05:02
可以把a看成左括号,b看成右括号,这样判断是否为好串就能转化成括号匹配问题方法一:开栈。碰到左括号就入栈,右括号就出栈,使左右括号对应匹配,若有一次栈空(即左括号不够)但还有右括号,则右括号多了,不是好串。最终只要栈空,就是好串,否则不是好串方法二:计数。本题中只有一种括号,因此无需开栈,只需要记录 展开全文
头像 阿道夫_
发表于 2021-11-14 18:52:03
给个C语言的代码吧! ">int main() { char arr[55]; gets(arr); int i=0,sum=0; for(i=0;arr[i]!='\0';i++) { if(arr[i]=='a') sum++; else sum--; if(s 展开全文
头像 Silencer76
发表于 2025-06-10 16:53:21
题目链接 好串 题目描述 牛牛定义了一种"好串": 空字符串是好串。 一个字符串是好串,当且仅当它能由一个好串在任意位置插入一个 "ab" 子串得到。 给定一个只包含小写字母的字符串 s,请判断它是否是好串。 输入格式 一个字符串 s。 输出格式 如果 s 展开全文
头像 爱读书的菠萝蜜很想去杭州
发表于 2025-06-10 20:57:39
s = input() while s.find('ab')!=-1: s = s.replace('ab','') if len(s) != 0: print('Bad') else: print('Good')
头像 BraveCoder
发表于 2025-07-31 17:04:47
import java.util.Scanner; import java.util.Stack; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args 展开全文
头像 Bailongma
发表于 2020-05-24 21:03:32
#include<iostream> #include<string> using namespace std; int main() { string s; cin>>s; int len=s.length(); int su 展开全文
头像 MedicineCliff
发表于 2024-03-10 10:30:27
初学stl 第一次解决栈相关的问题 写题解防止遗忘 #include<bits/stdc++.h> using namespace std; int main() { string s; cin>>s; stack<char>stk;//构建stack容器 int 展开全文
头像 ciallobite
发表于 2025-05-31 17:05:32
def main(): s = input() st = 0 n = len(s) for i in range(n): if s[i] == 'a': st += 1 elif s[i] == 'b': 展开全文
头像 sunny_forever
发表于 2021-08-04 18:57:34
转化为:括号匹配 Code #include <bits/stdc++.h> using namespace std; const int N = 100; char s[N]; int main(){ cin>>s+1; int d=0; bool 展开全文

问题信息

上传者:牛客301599号
难度:
25条回答 1105浏览

热门推荐

通过挑战的用户

查看代码
好串