题目地址: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练习之求次数的更多相关文章

  1. ACM题目————STL练习之众数问题

    描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重的重数最大的元素成为众数.例如:S={1,2,2,2,3,5},则多重集S的众数是2, ...

  2. ACM题目————STL练习之Ananagrams

    Description Most crossword puzzle fans are used to anagrams--groups of words with the same letters i ...

  3. ACM题目————STL练习之字符串替换

    描述 编写一个程序实现将字符串中的所有"you"替换成"we" 输入 输入包含多行数据 每行数据是一个字符串,长度不超过1000 数据以EOF结束 输出 对于输 ...

  4. ACM题目————STL练习之 懒省事的小明(优先队列)

    描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.小明决定把所有的果子合成一堆. 因为小明比较懒,为了省力气,小明开始想点子了: 每一 ...

  5. ACM题目————STL + 全排列

    今天碰到一个函数,感觉挺好用的,全排列函数 next_permutation! 求全排列的函数,基本上与自己写的DFS时间复杂度差不多,毕竟是标准库.(2018-1-4 添加) 话不多说,直接上题. ...

  6. nyoj 1112 求次数(map, set)

    求次数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 题意很简单,给一个数n 以及一个字符串str,区间[i,i+n-1] 为一个新的字符串,i 属于[0,strl ...

  7. nyoj 1112 求次数 (map)

    求次数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 题意很简单,给一个数n 以及一个字符串str,区间[i,i+n-1] 为一个新的字符串,i 属于[0,strl ...

  8. LeetCode通关:求次数有妙招,位运算三连

    分门别类刷算法,坚持,进步! 刷题路线参考: https://github.com/chefyuan/algorithm-base 大家好,我是刷题困难户老三,这一节我们来刷几道很有意思的求次数问题, ...

  9. ACM题目———— 一种排序(STL之set)

    描述 输入 第一行有一个整数 0<n<10000,表示接下来有n组测试数据:每一组第一行有一个整数 0<m<1000,表示有m个长方形:接下来的m行,每一行有三个数 ,第一个数 ...

随机推荐

  1. inline-blcok 之间的空白间隙

    前言: inline-blcok 布局时,通常情况下, inline-blocks 之间有空白,尽管通常我们是不想要的,毕竟不像padding或者margin一样好控制,如图: <div cla ...

  2. Centos7 安装hive

    安装hive 配置hive 在hdfs中新建目录/user/hive/warehouse 首先启动hadoop任务 hdfs dfs -mkdir /tmp hdfs dfs -mkdir /user ...

  3. zero-shot learning(ps:每天演好一个情绪稳定的成年人)

    my paper~~ 1.(DAP,IAP)Learning To Detect Unseen Object Classes by Between-Class Attribute Transfer 2 ...

  4. Mergeable Stack 直接list内置函数。(152 - The 18th Zhejiang University Programming Contest Sponsored by TuSimple)

    题意:模拟栈,正常pop,push,多一个merge A B 形象地说就是就是将栈B堆到栈A上. 题解:直接用list 的pop_back,push_back,splice 模拟, 坑:用splice ...

  5. 网站搜索引擎优化(SEO)的18条守则

    1.永远不要放过网页的title,这个地方应该是你每次优化的重点. 2.请不要在title,deion,keyword里写太多东西,越是贪婪,得到的就越少. 3.网页的头部和底部是很重要的,对于搜索引 ...

  6. 【python+opencv】直线检测+圆检测

     Python+OpenCV图像处理—— 直线检测 直线检测理论知识: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进 ...

  7. CSS 基础知识

    CSS 实例(CSS声明总是以分号(;)结束,声明组以大括号({})括起来:) CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明: 选择器通常是您需要改变样式的 HTML 元素. 每条声明 ...

  8. 万恶之源 - Python初识函数

    什么是函数 我们目前为止,已经可以完成一些软件的基本功能了,那么我们来完成这样一个功能:约x pint("拿出手机") print("打开陌陌") print( ...

  9. [py]access日志入mysql-通过flask前端展示

    目录 pymysql组装sql入库日志 代码组织 将入库的日志通过flask前端展示 pymysql组装sql入库日志 pymysql模块的用法 采集这些指标(metirc)都是linux环境,会用到 ...

  10. [svc]ftp协议数据连接的2种模式

    玩明白了以太网2的二层数据格式, ip格式 tcp/udp个时候, 需要玩一玩一些有用的基于这些已上的协议数据了. 如 dhcp ftp等.比较有趣. ftp协议 分控制连接21端口 和数据连接 20 ...