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行,每一行有三个数 ,第一个数 ...
随机推荐
- HTML/css之弹性布局
1.flex 弹性布局 产生的比较晚 目前在移动网页开发中可以使用 而且逐渐成为主流. 在桌面网页开发中,使用的比较少 (主要是桌面浏览器的兼容性问题更加严重) 开启方法: 在容器标签上,加上disp ...
- ubuntu-server-18.04 设置开机启动脚本
ubuntu-16.10 开始不再使用initd管理系统,改用systemd systemd is now used for user sessions. System sessions had al ...
- 牛客网多校赛第9场 E-Music Game【概率期望】【逆元】
链接:https://www.nowcoder.com/acm/contest/147/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...
- JS 防止表单重复提交的方法
第一种:用flag标识,下面的代码设置checkSubmitFlg标志: <script language="”JavaScript”"> var checkSubmi ...
- sublime安装install package
通过 https://sublime.wbond.net/Package%20Control.sublime-package 下载packageControl文件 下载完成后,打开sublime te ...
- LoadRunner-迭代和并发设置
迭代:指运行一次脚本时某段代码块(action)循环执行的次数,串行执行 并发:指同时运行脚本的次数,并行执行(多个用户同时跑) 以下是用例和对应的相关设置 Iterations是在Vuser Gen ...
- Google Guava缓存实现接口的限流
一.项目背景 最近项目中需要进行接口保护,防止高并发的情况把系统搞崩,因此需要对一个查询接口进行限流,主要的目的就是限制单位时间内请求此查询的次数,例如1000次,来保护接口. 参考了 开涛的博客聊聊 ...
- Balanced Lineup---poj3264线段树基础
题目链接 求对应区间最大值与最小值的差: #include<stdio.h> #include<string.h> #include<algorithm> #inc ...
- git push 文件过大时出错,fatal: The remote end hung up unexpectedly
可以修改配置文件: 1 使用命令:git config http.postBuffer = 524288000 2修改git文件夹中的config文件,加入如下一段: [http] postBuffe ...
- 原生js模仿下拉刷新功能
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...