目录
思路:
分别用两个字符串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]);
- }
- }
-
相关阅读:
概念:云计算
口袋参谋:一键下载任意买家秀图片、视频,是怎么做到的!
【系统架构】系统质量属性与架构评估
leetcode 44. 通配符匹配(困难,dp)
工作心得——css让元素居中的方法
USB摄像头驱动分析
分布式架构网络通信
单元格法近似求解多边形最大内接矩形问题【思路讲解+java实现】
java毕业设计的影视资讯管理系统mybatis+源码+调试部署+系统+数据库+lw
音视频(1) - FFmpeg4.3.4编译
-
原文地址:https://blog.csdn.net/YQ20210216/article/details/127706554