P1308(字符串类,处理字符串查找)

题目描述

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

现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1 ),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2 )。

输入格式

共22行。

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

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

输出格式

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

 1 #include<iostream>
 2 #include<string>
 3 #include<vector>
 4 #include<cctype>
 5 using namespace std;
 6 int main(){
 7     int cal1=0;
 8     string::size_type cal2;
 9     string::size_type tmp;
10     string letter,paragraph;
11     getline(cin,letter);
12     getline(cin,paragraph);
13     letter=‘ ‘+letter+‘ ‘;
14     for(auto &ch:letter){
15             ch=tolower(ch);
16     }
17     paragraph=‘ ‘+paragraph+‘ ‘;
18     for(auto &ch:paragraph){
19             ch=tolower(ch);
20     }
21     if((paragraph.find(letter))!=string::npos){
22         cal2=paragraph.find(letter);
23     }else{
24         cout<<-1;
25         return 0;
26     }
27     tmp=0;
28     while((paragraph.find(letter,tmp))!=string::npos){
29         tmp=paragraph.find(letter,tmp);
30         tmp+=letter.length()-1;
31         cal1++;
32     }
33         cout<<cal1<<" "<<cal2;
34
35 } 

字符串的输入直接getline(cin,str);(并无必要判断是否是无效输入)

本题使用find(str,pos)函数进行处理,千万记得:每次查找一遍后要刷新pos值,使其定位到string的新开头处

原文地址:https://www.cnblogs.com/hfut-freshguy/p/11529891.html

时间: 2024-10-04 00:00:39

P1308(字符串类,处理字符串查找)的相关文章

自己编写的Windows字符串类 封装字符串格式转换和常用操作 方便使用

最近开发的语音识别的项目经常碰到转码的问题,各种宽窄字节转换,ASNI, UTF8, 宽字节 --  代码写得冗长,繁琐,维护性太差了.决定自己写一个能直接使用各种编码的字符串类,于是实现了一个,功能不多,但是也够用.由于string 和 wstring 在多线程下共享数据会出问题,这里只用最基础的char 和 wchar_t. 基于Windows平台,代码如下 /* ************************************************** Title: 自定义字符串

String: 字符串类,字符串是常量;它们的值在创建之后不能更改 复习

boolean equals(Object obj) 判断两个字符串中的内容是否相同boolean equalsIgnoreCase(String str) 判断两个字符串中的内容是否相同, 忽略大小写boolean contains(String str) 判断该字符串中 是否包含给定的字符串boolean startsWith(String str) 判断该字符串 是否以给定的字符串开头boolean endsWith(String str) 判断该字符串 是否以给定的字符串结尾boolea

UINCODE字符串和安全字符串函数

字符集基础知识 在计算机中,字符都是以二进制编码方式存在于存储中 编码与解码 将字符输入计算机存储的过程类似于一个"编码"的过程 而将对应的"编码"显示出来的过程类似于一个解码的过程 二进制值本身代表什么含义是可以随意定义的,在内存中用某个2进制的值代表某一个值, 比如说用8位2进制的代表单字节这些,16位,32位等等 用某个二进制值表示某个字符完全是人为设定的,最终字符集就是字符到其二进制数字值得映射 单字节字符集(SBCS)  Single Byte Chara

Python 的字符串类子串查找函数

Python 的字符串类有个很好用的函数,可很方便的用于与查找Python字符串类型对象子串相关的操作,具体的API如下: | find(...) | S.find(sub [,start [,end]]) -> int | | Return the lowest index in S where substring sub is found, | such that sub is contained within s[start:end]. Optional | arguments start

[Swift]扩展String类:实现find()查找子字符串在父字符串中的位置

类似于C++中的find()函数:比较等于val的范围中第一个元素的迭代器.如果没有元素匹配,则函数最后返回. 返回值是子字符串在父字符串中的位置(下标记录), 如果没有找到,那么会返回一个特别的标记npos(-1). 返回值可以看成是一个Int型的数. 1 //String扩展 2 extension String { 3 // 截取字符串:从index到结束处 4 // - Parameter index: 开始索引 5 // - Returns: 子字符串 6 func subString

Java从零开始(4)类String字符串

字符串是由字符组成,在Java中,字符串是对象,是描述字符的基本数据结构.String类可以用来保存一个字符串,本类是最终类,不允许继承: 1.String对象的创建 初始化 由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下: String s = “abc”; s = “Java语言”; 使用关键字new 其实按照面向对象的标准语法,其格式应该为: String s = new String(“abc”); s = new Stri

JAVA字符串类

一.字符串类String1.String是一个类,位于java.lang包中2.创建一个字符串对象的2种方式: String 变量名="值"; String 对象名=new String("值");3.字符串的常用方法 3.1 字符串长度--length() 3.2 判断值是否相等 equals() 3.3 判断字符串对象地址是否相同 == 3.4 忽略 大小写 判断 equalsIgnoreCase() 3.5 大小写转换 toLowerCase()--小写 to

C++--标准库 字符串类

一.C++标准库 C++标准库1.C++标准并不是C++语言的一部分2.C++标准库是由类库和函数库组成的集合3.C++标准库中定义的类和对象位于std命名空间中4.C++标准库的头文件都不带.h后缀5.C++标准库涵盖了C库的功能C++编译环境的组成C++标准库预定义了多数常用的数据结构代码示例 二.字符串类 Q:C语言存在的问题1.C语言不支持真正意义上的字符串2.C语言用字符数组和一组函数实现字符串操作3.C语言不支持自定义类型,因此无法获得字符串类型解决方法1.从C到C++的进化过程引入

常用类 Object 字符串

Java Object类 java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. Object类是Java中唯一没有父类的类. 其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法. boolean equals(Object obj) "=="运算符判断两个引用是否指向同一个对象. 对于Object类的equals()方法来说,它判断调用eq

Sting 字符串类

一.字符串类String 字符串(string)是由字符构成的一个序列. 1. 构建一个字符串 //直接将字符串直接量看成String对象. String message = "Weclome to JAVA"; //使用字符数组 char[] charArray = { 'G', 'o', 'o', 'd', ' ', 'D', 'a', 'y'}; String message = new String(charArray); String变量存储的是对String对象的引用,St