【蓝桥杯刷题】字符串模块之字符串(持续更新)

前言

本刷题系列是我为了蓝桥杯前几天可以再系统性思考一下真题所做,所以部分内容会很简洁。如果能够帮助到你,我也会很开心!!

题目一

1.航班时间 - 蓝桥云课 (lanqiao.cn)

截图

卡住的点

输入格式

  scanf("%d:%d:%d %d:%d:%d (+%d)",&h1, &m1, &s1, &h2, &m2, &s2, &day);

第二题

2.人物相关性分析 - 蓝桥云课 (lanqiao.cn)

截图

  if (str.substr(i, 单词的长度) == "单词") 

思考

1.两者同时出现,Alice可能在Bob之前出现,也可能在Bob之后出现,所以要分两种情况

2.如何判断Alice和Bob是一个独立的单词

3.思路:先把Bob和Alice中的需要的位置分别存入到不同的数组中去,然后遍历一方的数组元素,维护好另一方的距离范围

第三题

7.串的处理 - 蓝桥云课 (lanqiao.cn)

截图

思考

更考的是输入输出格式的灵活应用(写在总结部分了)

总结

1.找单独的单词的方法

  if (str.substr(i, 单词的长度) == "单词"&&!(check(i+单词长度)))

check函数的目的是判断当前单词是否是字母,因为如果是字母的话,就说明他后面还跟着字母,不是一个独立的单词

bool check(char h) {
    if(h >= 'A' && h <= 'Z' || h >= 'a' && h <= 'z')
        return true;
    else
       return false;
}

2.输入字符串

string str;
getline(cin, str);

3.将首字母变换大小写

if ((S[i - 1] == ' ' || i == 0) && S[i] >= 'a' && S[i] <= 'z')
 {
            cout << char(S[i] + 'A' - 'a');
 }

4.如果有多个空格只输出一个

if (S[i - 1] == ' ' && S[i] == ' ')
{
            continue;
}

5.将字母和数字用下划线分开

(输出都是一样的格式是因为两种情况下划线都会在s[i-1]和s[i]中输出)

     if (S[i - 1] >= '0' && S[i - 1] <= '9' && S[i] >= 'a' && S[i] <= 'z')
        {
            cout << '_' << S[i];//数字在字母前
        }
     else if (S[i] >= '0' && S[i] <= '9' && S[i - 1] >= 'a' && S[i - 1] <= 'z')
        {
            cout << '_' << S[i];//数字在字母后
        }

6.检查是否是独立单词

 if ((!i || !check(str[i - 1])) && (i + 单词长度 == str.size() || !check(str[i + 单词长度])))

 

反思

遇到输出问题,可以考虑scanf和cin的灵活使用

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值