• 统计单词数:string函数使用


    题目描述

    一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。

    现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章

    中的某一独立单词在不区分大小写的情况下完全相同(参见样例1 ),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2 )。

    输入输出格式

    输入格式:

    2行。

    1行为一个字符串,其中只含字母,表示给定单词;

    2行为一个字符串,其中只可能包含字母和空格,表示给定的文章。

    输出格式:

    一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从0 开始);如果单词在文章中没有出现,则直接输出一个整数1。

    输入输出样例

    输入样例#1: 
    To
    to be or not to be is a question
    
    输出样例#1: 
    2 0
    
    
    输入样例#2: 
    to
    Did the Ottoman Empire lose its power at that time
    输出样例#2: 
    -1

    说明

    数据范围

    1≤单词长度10。

    1≤文章长度1,000,000。

    noip2011普及组第2题

    先了解几个函数:

    tolower()  a[i]=tolower(a[i])   将a字符转换为小写

    toupper()  a[i]=toupper(a[i])  将a字符转换为大写

    find()  int a=b.find(str,0)  返回str在字符串中第一次出现的位置(从index开始查找)如果没找到则返回string::npos

    
    
    #include<iostream>
    #include<algorithm>
    #include<string>
    #include<cstdio>
    using namespace std;
    int main() {
    	string a, b;
    	cin >> a;
    	getchar();		//吸收输入a时的空格,头文件<cstdio>
    	getline(cin,b);
    
    	int lena = a.size(), lenb = b.size();
    
    	for (int i = 0; i<lena; ++i) {
    		a[i] = tolower(a[i]);
    	}
    	for (int i = 0; i<lenb; ++i) {
    		b[i] = tolower(b[i]);
    	}
    
    	a = ' ' + a + ' ';
    	b = ' ' + b + ' ';
    
    	if (b.find(a) == string::npos) {	//找不到
    		cout << -1 << endl;
    	}
    	else {
    		int cnt = 0, ans = b.find(a),t=b.find(a);
    		while (t != string::npos) {
    			cnt++;
    			t = b.find(a, t + 1);
    		}
    		cout << cnt << ' ' << ans << "
    ";
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    (译)构建Async同步基元,Part 3 AsyncCountdownEvent
    (译)构建Async同步基元,Part 5 AsyncSemaphore
    SICP学习笔记(P3P17)
    关于汇编语言寄存器和指令操作的整理
    VS2010和IE8是怎样让"Ctrl+鼠标滚轮的上下操作"实现改变字体或页面大小的
    "六度空间"的应用——找出两个陌生人之间的关系(二)
    关于QQ一些功能的实现(二)
    用Socket做一个局域网聊天工具
    SICP学习笔记(P27P28)
    算法练习 (二)
  • 原文地址:https://www.cnblogs.com/52dxer/p/10425519.html
Copyright © 2020-2023  润新知