string类中有很多好用的函数,这里介绍在string类字符串中查找字符串的函数。
string类字符串中查找字符串一般可以用:
1、s.find(s1)函数,从前往后查找与目标字符串匹配的第一个位置;
2、s.rfind(s1)函数,从后往前查找与目标字符串匹配的最后一个位置;
3、s.find_first_of(s1),查找在s1中任意一个字符在s中第一次出现的位置
4、s.find_last_of(s1) 查找在s1中任意一个字符在s中最后一次出现的位置
下面给出一道例题:
出勤记录
小Hi的算法课老师每次上课都会统计小Hi的出勤记录。迟到会被记录一个L,缺席会被记录一个A,按时上课会被记录一个O。
一学期结束,小Hi的出勤记录可以看成是一个只包含LAO的字符串,例如"OOOOLOOOLALLO……"。
如果小Hi整学期缺席不超过1次,并且没有连续3次迟到,小Hi的出勤记录就算合格。
现在给出小Hi的出勤记录,你能判断他是否合格么?
Input输入第一行包含一个整数T(1 <= T <= 10),代表测试数据的组数。
以下T行每行一个程度不超过100的字符串S,代表小Hi的出勤记录。
Output对于每一份出勤记录,输出YES或者NO表示该份记录是否合格。
3 LLOLLALL OLLLOOOO OOAAOOOOSample Output
YES NO NO
下面给出代码:
#include<cstdio>
#include<string>
#include<iostream>
using namespace std;
int main()
{
//freopen("in.txt","r",stdin);
int t;
scanf("%d",&t);
while(t--){
string s;
cin>>s;
int a=s.find('A'),b=s.rfind('A');
if(a!=b) printf("NO\n");
else if(s.find("LLL")!=-1) printf("NO\n");
else printf("YES\n");
}
}代码这样写看起来很舒服,如果用字符数组写估计又要费一番功夫了。
本人弱鸡一枚,如有错误欢迎指出,谢谢。
本文介绍如何利用C++中的string类函数find和rfind来高效检查学生的出勤记录,确保符合特定条件:缺席不超过一次且无连续三次迟到。
&spm=1001.2101.3001.5002&articleId=80615254&d=1&t=3&u=1eb34989995b41de9dcefdebfbfa6a98)
632

被折叠的 条评论
为什么被折叠?



