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

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

众所周知,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. 优步uber司机常见问题与答案(成都地区官方)

    成都地区优步司机常见问题,官方内容,有点多,常出现的问题都收录在这里了,大家可以看看.(注:文章转自官方,非原创) 以下为成都优步合作车主最常见的问题列表和答案.对于绝大多数的车主端问题,您都可以在下 ...

  2. lamp环境搭建(centos6.9+apache2.4+mysql5.7+php7.1)

    lamp环境搭建(centos6.9+apache2.4+mysql5.7+php7.1) 安装前准备:CentOS 6.9 64位 最小化安装 yum install -y make gcc gcc ...

  3. CF 1093 E. Intersection of Permutations

    E. Intersection of Permutations 链接 题意: 给定两个序列,询问第一个排列的[l1,r1]和第二个排列[l2,r2]中有多少个共同的数,支持在第二个排列中交换两个数. ...

  4. 安装centos minimal 版本后安装setup包(linux)

    网络配置好后,输入命令 yum install setuptool,安装过程有两个确认,输入Y即可

  5. Maven学习(三)-----Maven本地资源库

    Maven本地资源库 Maven的本地资源库是用来存储所有项目的依赖关系(插件jar和其他文件,这些文件被Maven下载)到本地文件夹.很简单,当你建立一个Maven项目,所有相关文件将被存储在你的M ...

  6. Scala基础知识笔记2

    1 类 1.1 定义一个简单的类 1.2 field的getter 和 setter方法 感觉成员变量定义成  var 属性名=属性值即可,  不需要定义成 val 或者 private就行, // ...

  7. Spring学习(3):Spring概述(转载)

    1. Spring是什么? Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发. 在面向对象思想中 ...

  8. v-model 双向数据绑定

    通过v-model指令可以实现双向数据绑定 HTML部分: <div id="app"> <input type="text" v-model ...

  9. linux 的 awk 使用

    linux中awk命令对文本内容进行操作,其功能十分强大 1.如:查看一个有几百万行内容的文件中第3列数字内容(不重复) cat test.csv | awk -F ',' '{print $3}' ...

  10. 大前端全栈CSS3移动端开发

    作者声明:本博客中所写的文章,都是博主自学过程的笔记,参考了很多的学习资料,学习资料和笔记会注明出处,所有的内容都以交流学习为主.有不正确的地方,欢迎批评指正 本节课学习视频来源:https://ww ...