首页 > 试题广场 >

好串

[编程题]好串
  • 热度指数: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

备注:

s = input()
lst = []
flag = 'Good'
for i in s:
    if i == 'a':
        lst.append(i)
    elif i == 'b':
        if lst != []:
            if lst[-1] == 'a':
                lst.pop(-1)
            else:
                flag = 'Bad'
        else:
            flag = 'Bad'
if lst != []:
    flag = 'Bad'
print(flag)
     

发表于 2026-01-30 21:24:57 回复(0)
s = list(input())
list_s = []
dict_s = {
    "b":"a"
}
for i in s:
    if i == "a":
        list_s.append(i)
    elif i in dict_s:
        if not list_s&nbs***bsp;list_s.pop() != dict_s[i]:
            print("Bad")
            break
else:
    if not list_s:
        print("Good")
    else:
        print("Bad")
        
    
和括号匹配方法一样
发表于 2025-11-19 15:21:35 回复(0)
import sys

a, s = "", ""
for line in sys.stdin:
    a = line.split()
s = a[0]
while "ab" in s:
    s = s.replace("ab", "")
print("Good" if not s else "Bad")
发表于 2025-11-14 09:45:16 回复(0)
s=input().strip()
g=[]
c1,c2=0,0

for i in range(len(s)):
    if s[i]=='a':
        g.append(s[i])
        c1+=1
    elif s[i]=='b':
        if not g:
            print('Bad')
            exit()
        top = g.pop()
        if(top == 'a' and s[i] == 'b'):
            c2+=1
if c1==c2:
    print('Good')
else:
    print('Bad')
发表于 2025-08-18 10:53:36 回复(0)

n = input().strip()

# 核心逻辑:不断删除 "ab" 子串,直到无法删除为止
while "ab" in n:
    n = n.replace("ab", "")  # 每次删除所有 "ab"(replace 会全局替换)

# 判断最终是否删空
if not n:
    print("Good")
else:
    print("Bad")

发表于 2025-08-14 13:44:38 回复(0)
class Stock:
    def __init__(self) -> None:
        self.li = []

    def push(self, x):
        self.li.append(x)

    def pop(self):
        return self.li.pop()

    def query(self):
        return self.li[-1]

    def size(self):
        return len(self.li)
   
    def empty(self):
        return self.li == []

def smatch(s:str):
    stock = Stock()
    for i in s:
        if i == 'a':
            stock.push(i)
        elif i == 'b':
            if stock.empty():
                return 'Bad'
            stock.pop()
        else:
            pass
    if stock.empty():
        return 'Good'
    else:
        return 'Bad'

if __name__ == '__main__':
    s = input()
    print(smatch(s))
发表于 2025-07-19 16:36:31 回复(0)

问题信息

上传者:牛客301599号
难度:
6条回答 1101浏览

热门推荐

通过挑战的用户

查看代码
好串