题解 P1308 【统计单词数】
小金羊发一篇不一样的题解:
这个题解不是讲解法的,是讲算法的...
众所周知,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 【统计单词数】的更多相关文章
- 洛谷 P1308 统计单词数
P1308 统计单词数 题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定 ...
- P1308 统计单词数
P1308 题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请 ...
- 洛谷 P1308 统计单词数【string类及其函数应用/STL】
题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...
- (水题)洛谷 - P1308 - 统计单词数
https://www.luogu.org/problemnew/show/P1308 简单哈希一下判断,练练手. 注意fgets()的用法,第一个参数传存储位置,第二个参数传内存上限,第三个传std ...
- 洛谷P1308 统计单词数
原题链接:https://www.luogu.org/problem/P1308 #include<iostream> #include<cstring> #include&l ...
- 字符串--P1308 统计单词数
题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...
- P1308 统计单词数(cin,getline() ,transform() )
题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...
- java实现洛谷P1308统计单词数
题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...
- 使用jdk8 stream 统计单词数
在我的SpringBoot2.0不容错过的新特性 WebFlux响应式编程里面,有同学问如何使用stream统计单词数.这是个好例子,也很典型,在这里补上. 下面的例子实现了从一个文本文件读取(英文) ...
- 统计单词数(WordCount)
1.首先新建两个文件夹: 往文件夹添加内容: 2.启动hadoop-查看是否启动成功. 3.先对nameNode进行初始化. 4.查看hadoop下面有哪些文件. 5.在hadoop目录下创建inpu ...
随机推荐
- Drupal views 中合并显示字段
如图, 需要显示如下数据表格 表格的第三列是由两个字段组成的.分别是title 标题字段和body 内容字段. 默认情况下,一列只显示一个字段.如何同时显示两个呢? 这个问题难不到强大的views,要 ...
- Unity商店下载的文件保存路径?
Win7系统: C:\Users\系统用户名\AppData\Roaming\Unity\Asset Store MAC:"~/Library/Unity/Asset\ Store" ...
- HTML中CSS入门基础
HTML.CSS 实用css有三种格式:内嵌:内联:外部: 分类:内联:写在标记的属性位置,优先级最高,重用性最差内嵌:写在页面的head中,优先级第二,重用性一般外部:写在一个以css结尾的文件中, ...
- 【ZABBIX】SNMPtrap实现主动监控的原理与安装配置
工欲善其事,必先利其器.作为一款强大的开源软件,Zabbix号称“Monitor Everything”,其所依赖的,很大程度上便是SNMP的数据采集支持.SNMP 协议是用来管理设备的协议,目前SN ...
- [寒假学习笔记](二)Python初学
Python 学习 python的自学从几个月前断断续续地进行,想好好利用这个寒假,好好地学一学. 回顾 已学习:基本操作.函数 已有C++的一定基础,只要注意python中比较特殊的部分就行 进入正 ...
- linux-sftp-指定端口号登录远程主机
sftp -oPort=60001 root@192.168.0.254 -o选项来指定端口号 -oPort=远程端口号
- react native组件的生命周期
react native组件的生命周期 一.当页面第一次加载时,会依次调用: constructor() componentWillMount(): 这个函数调用时机是在组件创建,并初始化了状态之后, ...
- Windows 10 系统下Python环境的搭建与配置
1. 在https://www.python.org/downloads/release/python-352/网站上下载python版本 2. 配置环境 右击计算机属性,然后选择高级系统设置 3. ...
- Transparent Flow Migration for NFV
Transparent Flow Migration for NFV 摘要 因为SDN提供的灵活性,NF之间存在着流量的迁入和迁出问题.而且NF也要根据相关的状态信息处理数据包,所以流量迁移必须满足以 ...
- OpenFlow协议
功能 1.0版本Openflow:控制器通过Openflow协议与交换机建立了安全通道(Sceure Channel),下发流表. 1.3版本Openflow:多控制器,多流表. 用于实现Contro ...