ACM题目————STL练习之求次数
题目地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=1112
描述
题意很简单,给一个数n 以及一个字符串str,区间【i,i+n-1】 为一个新的字符串,i 属于【0,strlen(str)】如果新的字符串出现过ans++,例如:acmacm n=3,那么 子串为acm cma mac acm ,只有acm出现过
求ans;
- 输入
- LINE 1: T组数据(T<10)
LINE 2: n ,n <= 10,且小于strlen(str);
LINE 3:str
str 仅包含英文小写字母 ,切长度小于10w - 输出
- 求 ans
- 样例输入
-
2
2
aaaaaaa
3
acmacm - 样例输出
-
5
1
map解法:
//Asimple #include <iostream>
#include <map>
#include <cstdio> using namespace std;
int T, n, ans;
string str; int main()
{
scanf("%d",&T);
// cin >> T;//TLE了三次,没想到竟然是 cin 的错
while( T-- )
{
cin >> n >> str ;
ans = 0;
map<string,int> m;
int len = str.length();
for(int i=0; i<=len-n; i++)
{
string s = str.substr(i,n);
if( m[s] == 1 ) ans ++ ;
else m[s] = 1 ;
}
cout << ans << endl ;
} return 0;
}
set解法:
//Asimple #include <iostream>
#include<cstdio>
#include<cstring>
#include <set>
using namespace std; int main()
{
int T;
scanf("%d", &T);
while(T--)
{
int n,i, ans = 0;
scanf("%d", &n);
set<string> S;
string str, s;
cin >> str;
int len = str.length();
int lens=str.size();
for(i=0; i<=len-n; i++)
{
s=str.substr(i,n);
S.insert(s);
if(S.size()==lens) ans++;
else lens=S.size();
}
printf("%d\n", ans);
}
return 0;
}
最优解,结构字符串排序:
//Asimple
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std; struct str
{
char s[12];
} r[100001]; int n;
char _str[100001]; void _strcpy(int x, int y)
{
int j; for (j=0; j<n; j++)
r[x].s[j] = _str[y+j];
r[x].s[j] = '\0';
return ;
} bool cmp(str a, str b)
{
return strcmp(a.s, b.s) < 0;
} int main()
{
int T, i, count, l;
scanf("%d", &T);
while (T--)
{
count = 0;
memset(_str, '\0', sizeof(_str));
scanf("%d", &n);
scanf("%s", _str);
l = strlen(_str);
for (i=0; i<=l-n; i++)
_strcpy(i, i);
sort(r, r+l-n+1, cmp); for (i=0; i<l-n; i++)
if (strcmp(r[i].s, r[i+1].s) == 0)
count++;
printf("%d\n", count);
}
return 0;
}
ACM题目————STL练习之求次数的更多相关文章
- ACM题目————STL练习之众数问题
描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重的重数最大的元素成为众数.例如:S={1,2,2,2,3,5},则多重集S的众数是2, ...
- ACM题目————STL练习之Ananagrams
Description Most crossword puzzle fans are used to anagrams--groups of words with the same letters i ...
- ACM题目————STL练习之字符串替换
描述 编写一个程序实现将字符串中的所有"you"替换成"we" 输入 输入包含多行数据 每行数据是一个字符串,长度不超过1000 数据以EOF结束 输出 对于输 ...
- ACM题目————STL练习之 懒省事的小明(优先队列)
描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.小明决定把所有的果子合成一堆. 因为小明比较懒,为了省力气,小明开始想点子了: 每一 ...
- ACM题目————STL + 全排列
今天碰到一个函数,感觉挺好用的,全排列函数 next_permutation! 求全排列的函数,基本上与自己写的DFS时间复杂度差不多,毕竟是标准库.(2018-1-4 添加) 话不多说,直接上题. ...
- nyoj 1112 求次数(map, set)
求次数 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 题意很简单,给一个数n 以及一个字符串str,区间[i,i+n-1] 为一个新的字符串,i 属于[0,strl ...
- nyoj 1112 求次数 (map)
求次数 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 题意很简单,给一个数n 以及一个字符串str,区间[i,i+n-1] 为一个新的字符串,i 属于[0,strl ...
- LeetCode通关:求次数有妙招,位运算三连
分门别类刷算法,坚持,进步! 刷题路线参考: https://github.com/chefyuan/algorithm-base 大家好,我是刷题困难户老三,这一节我们来刷几道很有意思的求次数问题, ...
- ACM题目———— 一种排序(STL之set)
描述 输入 第一行有一个整数 0<n<10000,表示接下来有n组测试数据:每一组第一行有一个整数 0<m<1000,表示有m个长方形:接下来的m行,每一行有三个数 ,第一个数 ...
随机推荐
- POJ_2019_Cornfields
Cornfields Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 7444 Accepted: 3609 Descri ...
- MySQL命令:创建数据库、插入数据
简介: 学习mysql环境为ubantu,下面记录一些基本的创建数据库和插入数据的口令 打开MySQL 服务并使用 root 登录: --打开 MySQL 服务 sudo service mysql ...
- 浏览器指纹 - HTTP cookie 浏览器指纹 欺诈检测 浏览器id hash 浏览器插件信息 canvas 字体信息
详解浏览器cookie和浏览隐私之间的关系http://www.iefans.net/cookie-yinsi-guanxi/ 详解浏览器cookie和浏览隐私之间的关系 浏览器相关 互联网 2013 ...
- supervisor control in centos 6/7 python2.6.2.7 3.4
sudo yum install epel-releasesudo yum install python34 sudo pip install virtualenv yum -y install ep ...
- ItunesConnect:上传完二进制文件后在构建版本中找不到
最近经常遇到上传完二进制文件后在构建版本中找不到的情况: 环境:Xcode 8.2 (8C38) 大致有几种原因,可以按照以下步骤排查下. 排查步骤: 1.检查使用的权限,并info.plist文件中 ...
- Jmeter(二十一)_脚本参数化与内存溢出的解决方案
这一篇文章随便说一下JMETER的脚本参数化 1:Parameters的两种参数化方法 1.1:函数助手参数化 首先准备你的参数数据.我在bin/data中新建了一个dat文件,记事本另存为修改编码为 ...
- git clone远程branch和tag
1.查看远程分支 git branch -r 2.测试git clone romete,只是clone远程remote的master,不会clone其他的目录 -------------------- ...
- hibernate中cascade和inverse
原文:http://blog.sina.com.cn/s/blog_7b9edd020100racc.html 这两个属性都用于一多对或者多对多的关系中. 而inverse特别是用于双向关系,在单向关 ...
- android 打开系统相机,
1.第一步在androidmanifest.xml中注册 <uses-permission android:name="android.permission.WRITE_EXTERNA ...
- 分享一个自定义的 console 类,让你不再纠结JS中的调试代码的兼容
问题的产生 在写JS的过程中,为了调试我们常常会写很多 console.log.console.info.console.group.console.warn.console.error代码来查看JS ...