小金羊发一篇不一样的题解:

这个题解不是讲解法的,是讲算法的...

众所周知,string在中被定义为是类型,

这意味着我们可以将它作为int一样的类型使用。

并且还有神奇的加减法:

string str,str2;
str2="Hello!";
str=str2-'!'+' '+"world!";
cout<<str;

结果就是:Hello world!


类型例子:


string lowwers(string str)
{//手写字符串该小写,死记!
int len=str.size();
for (int i=0;i<len;i++)
{
str[i]=(str[i]>=65&&str[i]<=90)?str[i]+32:str[i];
}
return str;
}

哇塞,这也就是说我们可以写一写不一样的函数了!


例子(输入):

string inputs()
{//输入,小写化,并且开头结尾加上' '
string temp;
getline(cin,temp);
return ' '+lowwers(temp)+' ';
}

甚至说,我们可以进行堆排序:

传送:https://www.luogu.org/blog/jelly123/

Code:

string strsort(string str)
{
int len=str.size();
for (int temp=0;temp<len;temp++)
{
q2.push(str[temp]);
}
string str2="";
for (int temp=0;temp<len;temp++)
{
char tempchar=q2.top();
str2=str2+tempchar;
q2.pop();
}
return str2;
}

整个把字符串堆排出来!

Code:

#include <bits/stdc++.h>
using namespace std;
priority_queue<string,vector<string>,greater<string> >q1;
//是的,你没有看错,
priority_queue<char,vector<char>,greater<char> >q2;
//由于小金羊不会其他排序,发一个堆排吧...
//话说字符串堆排是不是太玄学了...
//其实原理极其简单,入堆,出堆,返回,搞定。
//然后做一个字符串的整体的堆排,就OK了。
int n,count=1;
//整体变量
string strsort(string str)
{//字符串堆排,真玄学
int len=str.size();
for (int temp=0;temp<len;temp++)
{
q2.push(str[temp]);
}
string str2="";//把要生成的字符串变成空的
for (int temp=0;temp<len;temp++)
{
char tempchar=q2.top();
str2=str2+tempchar;
q2.pop();
}//生成完毕
return str2;//返回排好序的字符串
}
int main()
{
scanf("%d",&n);
if (n==1){putchar('1');return 0;}
//一个字符串还能有多少种啊
string strs[n+1];
//第一个字符串就不要了
for (int i=1;i<=n;i++)
{cin>>strs[i];strs[i]=strsort(strs[i]);}
//输入,并且对单个字符串排序
for (int i=1;i<=n;i++)
{q1.push(strs[i]);}
string strtemp=q1.top();q1.pop();
for (int i=1;i<n;i++)
{
string temp=q1.top();q1.pop();
if (temp!=strtemp){count++;}
strtemp=temp;
}
printf("%d",count);
return 0;
}

返回这个题,解:

#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
string lowwers(string str)
{//手写字符串该小写,死记!
int len=str.size();
for (int i=0;i<len;i++)
{
str[i]=(str[i]>=65&&str[i]<=90)?str[i]+32:str[i];
}
return str;
}
string inputs()
{//输入,小写化,并且开头结尾加上' '
string temp;
getline(cin,temp);
return ' '+lowwers(temp)+' ';
}
int main()
{
string pas,goal;
int pos=0,count=0,memory;//定位器
goal=inputs();
pas=inputs();
pos=pas.find(goal,pos);
if (pos==-1)
{
cout<<pos;
return 0;
}
else
{
memory=pos;count++;
pos+=goal.size()-1;
}
while (pos<pas.size())
{
pos=pas.find(goal,pos);
if (pos==-1)
{
break;
}
else
{
count++;
pos=pos+goal.size()-1;
}
}
cout<<count<<' '<<memory;
return 0;
}

完成,善莫大焉!

题解 P1308 【统计单词数】的更多相关文章

  1. 洛谷 P1308 统计单词数

    P1308 统计单词数 题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定 ...

  2. P1308 统计单词数

    P1308 题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请 ...

  3. 洛谷 P1308 统计单词数【string类及其函数应用/STL】

    题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...

  4. (水题)洛谷 - P1308 - 统计单词数

    https://www.luogu.org/problemnew/show/P1308 简单哈希一下判断,练练手. 注意fgets()的用法,第一个参数传存储位置,第二个参数传内存上限,第三个传std ...

  5. 洛谷P1308 统计单词数

    原题链接:https://www.luogu.org/problem/P1308 #include<iostream> #include<cstring> #include&l ...

  6. 字符串--P1308 统计单词数

    题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...

  7. P1308 统计单词数(cin,getline() ,transform() )

    题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...

  8. java实现洛谷P1308统计单词数

    题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...

  9. 使用jdk8 stream 统计单词数

    在我的SpringBoot2.0不容错过的新特性 WebFlux响应式编程里面,有同学问如何使用stream统计单词数.这是个好例子,也很典型,在这里补上. 下面的例子实现了从一个文本文件读取(英文) ...

  10. 统计单词数(WordCount)

    1.首先新建两个文件夹: 往文件夹添加内容: 2.启动hadoop-查看是否启动成功. 3.先对nameNode进行初始化. 4.查看hadoop下面有哪些文件. 5.在hadoop目录下创建inpu ...

随机推荐

  1. oracle-11g-64位安装和plaql

    1.oracle卸载 如果是新装,请跳过此步骤 卸载步骤: 1.停止所有服务 2.用自带删除软件,删除所有目录 3.打开注册表: -->运行regedit,删除HKEY_LOCAL_MACHIN ...

  2. [agc002D]Stamp Rally-[并查集+整体二分]

    Description 题目大意:给你一个n个点m个条边构成的简单无向连通图,有Q组询问,每次询问从两个点x,y走出两条路径,使这两条路径覆盖z个点,求得一种方案使得路径上经过的边的最大编号最小.n, ...

  3. 06004_Redis的启动、使用和停止

    1.Redis的启动 (1)前端模式启动 ①直接运行bin/redis-server将以前端模式启动:切换到 /usr/local/redis/bin目录下,然后./redis-server : ②前 ...

  4. 任务队列和异步接口的正确打开方式(.NET Core版本)

    任务队列和异步接口的正确打开方式 什么是异步接口? Asynchronous Operations Certain types of operations might require processi ...

  5. 12、Java并发编程:阻塞队列

    Java并发编程:阻塞队列 在前面几篇文章中,我们讨论了同步容器(Hashtable.Vector),也讨论了并发容器(ConcurrentHashMap.CopyOnWriteArrayList), ...

  6. 七、EnterpriseFrameWork框架基础功能之字典数据配置管理

    框架中的“通用字典数据配置管理”主要解决的问题是,所有的行业软件给客户实施第一步一般都是基础数据的维护,一个系统的字典是少不了的,涉及业务范围越广字典就越多,如果每一个字典数据都做一个界面来进行维护数 ...

  7. JavaScript的数组和字符串应用

    函数search实现在一个已排序的数字类型数组中查找指定数字的功能. 可以采用数组的内置方法,二分查找法等进行操作 //方法一 var search = function(arr,dst){ var ...

  8. Struts2(一.基本介绍,环境搭建及需求分析)

    Struts2框架开发 前言 开发工具:eclipse struts1:老项目使用较多,维护时需要用到 struts2:新项目使用较多 一.特点 1. 无侵入式设计 struts2 与 struts ...

  9. 基于preteus的1602液晶显示器的学习(LM016L)

    (证明学过,以示纪念) 所谓1602就是每行可以显示16个字符,可以显示两行.1602液晶在工业中使用比较广泛,其基本都采用的是HD44780控制器,或者兼容该指令集,因此基于HD44780写的控制程 ...

  10. AirSim的搭建和使用

    由于自己使用设备拍摄的数据质量太差,所以决定使用AirSim这个框架来生成数据.之所以使用这个框架,是因为之前同事用其生成了一些有效数据. 当然,我是不可能把我搭建的步骤一一写出来的,一来是因为太麻烦 ...