目录
思路:
分别用两个字符串str和sub分别接收列表和要查找的姓名,遍历str,遇到引号,则继续查找下一个引号出现的位置,然后将引号中间的字符串拷贝到vector当中,没有遇到引号,如果找到尾,则将下一次逗号出现的位置记录,将两个逗号中间的字符串拷贝到vector当中,如果到头了,则直接将最后一个字符串拷贝到vector当中,用sub到vector中寻找是否符合。
str.substr(),第一个参数是字符串起始位置,第二个是拷贝的长度,返回拷贝字符串
str.find(),第一个参数是要寻找的字符或字符串,第二个参数是寻找的起始位置,返回找到字符的起始位置
find(),第一第二个参数控制,寻找的范围(用迭代器),第三个参数是要寻找的字符串,返回值是迭代器,具体使用看代码
- // write your code here cpp
- #include
- #include
- #include
- #include
- using namespace std;
- int main()
- {
- string str,sub;
- while(getline(cin, str))
- {
- getline(cin, sub);
- vector
arr; - for(int i = 0; i < str.size(); ++i)
- {
- //处理引号部分
- if(str[i] == '\"')
- {
- //将引号中的名字存起来
- arr.push_back(str.substr(i+1, str.find('\"', i+1)-1-i));
- //从","下一位开始找
- i = str.find('\"', i+1)+1;
- }
- //处理非引号部分
- else
- {
- //如果没到头
- if(str.find(',', i)!=string::npos)
- {
- arr.push_back(str.substr(i, str.find(',', i)-i));
- i = str.find(',', i);
- }
- //如果到头了
- else
- {
- arr.push_back(str.substr(i, str.size()-i));
- i = str.size();
- }
- }
- }
- if(find(arr.begin(), arr.end(), sub)!=arr.end())
- cout<<"Ignore"<
- else
- cout<<"Important!"<
- }
- return 0;
- }
第二题-年会抽奖

思路:
- // write your code here cpp
- #include
- using namespace std;
- int main ()
- {
- //用long long防止超出范围
- long long mistake[21]={0,0,1};//都装错的次数
- long long sum[21] = {1,1,2};//所有装的方法
- for(int i = 3; i <= 20; ++i)
- {
- mistake[i] = (i-1)*(mistake[i-1]+mistake[i-2]);
- sum[i] = sum[i-1]*i;
- }
- int n;
- while(cin>>n)
- {
- printf("%.2lf%\n",100.0*mistake[n]/sum[n]);
- }
- }
-
相关阅读:
汇编语言(第三版)第一章 基础知识 笔记
EasyCVR视频汇聚平台无法自动播放视频的原因排查与解决
java-php-python-基于EE技术的“日进斗金”理财大师系统设计与实现计算机毕业设计
官方零基础入门 Jetpack Compose 的中文课程来啦!
简单说说关于shell中zsh和bash的选择
Redis缓存面临的缓存穿透问题
ssh 远程服务器 Host key verification failed.【known_hosts】
吴恩达《机器学习》1-4:无监督学习
137页Python学习笔记,全面总结看这一篇就够了
10年经验总结:数据分析师7种工具,因果分析划重点!
-
原文地址:https://blog.csdn.net/YQ20210216/article/details/127706554