【记录】stl入门习题

链接:登录---专业IT笔试面试备考平台_牛客网

来源:牛客网

题目描述

牛牛喜欢跟字符串玩耍,他刚刚学会了一个新操作,将一个字符串x插入另一个字符串y中(包括放在开头和结尾)

牛牛认为如果一个串是好的当这个串能按照如下方法被构造出来:

一开始,有一个空串,然后执行0次或者若干次操作,每次操作将ab插入当前的字符串

根据上面的定义,ab, aabb, aababb都是好串,aab,ba,abbb并不是好串

现在给你一个字符串s,判断s是否是好串

输入描述:

复制代码
输入一行包含一个字符串,长度不超过50

输出描述:

复制代码
输出"Good" 或者 "Bad"

示例1

输入

复制

复制代码
ab

输出

复制

复制代码
Good

示例2

输入

复制

复制代码
aab

输出

复制

复制代码
Bad

示例3

输入

复制

复制代码
abaababababbaabbaaaabaababaabbabaaabbbbbbbb

输出

复制

复制代码
Bad

错解

一开始理解错误题目,认为输入的字符串必须是偶数项而且ab必须相连。

cpp 复制代码
# include <bits/stdc++.h>
using namespace std;

int main(){
    string str;
    cin>>str;
    
    bool isGood=true;
    
    if(str.length()%2!=0) isGood=false;
    else{
        for(int i=0;i<str.length()-1;i+=2){
            if(str[i]!='a'||str[i+1]!='b') {
                isGood=false;
                break;
            }
        }
    }
    
    if(isGood==true) cout<<"Good";
    else cout<<"Bad";
    return 0;  
}

输出一直报错百分之六十,参考其他题解,又仔细看了看题目,原来是字符串里面a和b的数目和顺序要对应。

正解

核心思想:遇到a入栈,遇到b出栈,此时如果栈空则bad;b处理完后,如果栈空,也为bad。

cpp 复制代码
# include <bits/stdc++.h>
using namespace std;

int main(){
    string str;
    stack<char> stk;
    cin>>str;
    bool isGood=true;
    
    for(int i=0;i<str.size();i++){
        if(str[i]=='a') stk.push('a');
        else{
            if(stk.empty()) {
                isGood=false;
                break;
            }
            stk.pop();
        }
    }
    if(!stk.empty()) isGood=false;
    
    if(isGood==true) cout<<"Good";
    else cout<<"Bad";
    return 0;  
}

break是必要的,否则会引起溢出。

相关推荐
微笑尅乐7 分钟前
三种思路彻底掌握 BST 判断(递归与迭代全解析)——力扣98.验证二叉搜索树
算法·leetcode·职场和发展
闻缺陷则喜何志丹12 分钟前
【动态规划】数位DP的原理、模板(封装类)
c++·算法·动态规划·原理·模板·数位dp
豆沙沙包?29 分钟前
2025年--Lc194-516. 最长回文子序列(动态规划在字符串的应用,需要二刷)--Java版
java·算法·动态规划
胖咕噜的稞达鸭31 分钟前
二叉树搜索树插入,查找,删除,Key/Value二叉搜索树场景应用+源码实现
c语言·数据结构·c++·算法·gitee
_extraordinary_31 分钟前
Java Spring配置
java·开发语言·spring
showmethetime31 分钟前
基于相空间重构的混沌时间序列预测MATLAB实现
算法
进击的大海贼1 小时前
QT-C++ 自定义加工统计通用模块
开发语言·c++·qt
Rhys..1 小时前
JS - npm init
开发语言·javascript·npm
地平线开发者1 小时前
大模型 | VLM 初识及在自动驾驶场景中的应用
算法·自动驾驶
newxtc1 小时前
【 广州产权交易所-注册安全分析报告-无验证方式导致安全隐患】
开发语言·人工智能·selenium·安全·yolo