NOIP2011 统计单词数(通俗易懂版本)
题目
AC代码
#include<bits/stdc++.h>
using namespace std;
int main()
{string str,s1;int ans=0,pos,index=0;getline(cin,s1); getline(cin,str);//读取空格,不读取回车 int l=s1.length();int len=str.length();for(int i=0;i<len;i++)str[i]=tolower(str[i]);for(int i=0;i<l;i++)s1[i]=tolower(s1[i]);str=' '+str+' ';s1=' '+s1+' ';while(str.find(s1,index) != string::npos){index = str.find(s1,index) + s1.size() - 1;ans++;}if(ans!=0)cout<<ans<<" "<<str.find(s1)<<endl;elsecout<<"-1"<<endl;return 0;
}
解题思路+注意事项
1.首先观察这个题目的时候,我们的输入中是有空格的,那我们就要想到学过的,输入可以允许读取空格的几种方式:
借鉴了大佬的文章
原文链接点这里
字符串输入: string str; scanf("%s",str);//不读取空格,不读取回车 gets(str);//读取空格,读取回车 cin>>str;//不读取空格, 不读取回车 getline(cin,str);//读取空格,不读取回车 字符输入 char ch; cin>>ch;//不读取回车 scanf("%c",&ch);//读取回车
1)cin>>接受一个字符串,遇“空格”、“Tab”、“回车”都结束
2)gets不能读取string类型的字符串。
3)会读取空格的就gets和getline
string str;
getline(cin,str);//可以读取空格,但是不能读取换行;
4)cin.getline() // 接受一个字符串,可以接收空格并输出
5)cin.get(字符数组名,接收字符数)用来接收一行字符串,可以接收空格
cin.get(字符变量名)可以用来接收字符。
2.要注意他是区分大小写的,所以我们先把s1(短短的)和str(那个长的)同时转化为大写或者都转化为小写,
for(int i=0;i<len;i++)str[i]=tolower(str[i]);for(int i=0;i<l;i++)s1[i]=tolower(s1[i]);//这里用tolower()或者toupper()都可以的; //但是注意要一个字符一个字符的去转化; for(int i=0;i<len;i++)str[i]=toupper()(str[i]);for(int i=0;i<l;i++)s1[i]=toupper()(s1[i]);
3.寻找短的s1在 str 中出现的次数,这里想到用string::npos
string::npos参数 —— npos 是一个常数,用来表示不存在的位置
例如,有两个字符串a、b,判断a字符串是否包含b字符串
//如果字符串不存在包含关系,那么返回值就一定是npos if(a.find(b)!=string::npos==1){cout<<"yes"<<endl; }else{cout<<"no"<<endl; }
所以利用这个可以来统计次数,即:
while(str.find(s1,index) != string::npos){index = str.find(s1,index) + s1.size() - 1;ans++;}
4.这里也用到了find()函数:
str1.find(str2, 5)的含义:
//从字符串str1下标5开始,查找字符串str2 ,返回str2在str1中的下标 string str1="abcdefg"; string str2="abc"; pos=str1.find(str2,5); cout<<pos<<endl;
上面的index变量,就是不断更新下标继续往后面找,看str中是否还含有s1,并且统计,最后输出结果。
NOIP2011 统计单词数(通俗易懂版本)相关推荐
- 信息学奥赛一本通 1400:统计单词数 | 1954:【11NOIP普及组】统计单词数 | OpenJudge NOI 1.12 05 | 洛谷 P1308 [NOIP2011 普及组] 统计单词数
[题目链接] ybt 1400:统计单词数 ybt 1954:[11NOIP普及组]统计单词数 OpenJudge NOI 1.12 05:统计单词数 洛谷 P1308 [NOIP2011 普及组] ...
- Bailian4030 统计单词数【文本处理】
4030:统计单词数 总时间限制: 1000ms 内存限制: 65535kB 描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次 ...
- JSK-27321 统计单词数【字符串】
统计单词数 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在 ...
- Python:读出文本本件,统计单词数输出;读出文本文件,随机输出其中的10个单词
#读出文本本件,统计单词数输出:读出文本文件,随机输出其中的10个单词 import re import random f=open("this.txt","r" ...
- 1750: 统计单词数(某个单词出现次数)
zcmu: 1750: 统计单词数 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 379 Solved: 74 [Submit][Status][Web ...
- 统计单词数(洛谷-P1308)
题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...
- Python:7-3 统计单词数-应用 (10分)
在需要统计若干段文字(英文)中的单词数量,并且还需统计每个单词出现的次数. 注1:单词之间以空格(1个或多个空格)为间隔. 注2:忽略空行或者空格行. 要求: 统计前,需要从文字中删除指定标点符号!. ...
- [ZCMU OJ]1750: 统计单词数(字符串处理/find运用)
Description 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你 ...
- TZOJ 4865 统计单词数(模拟字符串)
描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的 ...
最新文章
- Morph 3D拥有近千名艺术家,欲打造全球最大的VR虚拟化身服装库
- 方案 mysql 优点_mysql高可用方案分析
- 前端学习(2763):基本的数据绑定
- 【jupyter】notebook屏蔽warning信息输出
- Tomcat加载类机制 - 我们到底能走多远系列(14)
- SLAM_关于VIO中IMU预积分的讲解
- 阿里云中标“金关工程二期”大数据云项目,总金额8568万!(含标单)
- android播放swf文件
- 008_SSSS_ Improved Denoising Diffusion Probabilistic Models
- 网络传输的两种方式——同步传输和异步传输的区别
- sql server 参数探测(Parameter Sniffing)影响存储过程执行效率解决方案
- 微信小程序:微信商家券的领取
- 工程行业数字化采购商城平台提供科学采购决策,提高采购管理水平
- BDD测试框架Spock概要
- 【Matlab指纹识别】指纹识别匹配门禁系统【含GUI源码 587期】
- Python爬取豆瓣Top250电影排名
- Pushmail:这个可以有
- 存储单位的位(bit)、字节(Byte)、MB(兆位)之间的换算关系
- 学习记录---8255A简介及使用方法
- okhttp-OkGo(okhttp-util升级版)网络请求框架(一)