求次数

时间限制:1000 ms  |  内存限制:65535 KB
难度:2
 
描述

  题意很简单,给一个数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
/**
分析:该题是判断 一个字符串中的长度为n的子串重复的次数
方法:map <string, int> || set <string>
模板1 (map):
int ans = 0;
map <string, int> my_map;
pair <map <string, int> :: iterator, bool> pr; for (int i = 0; i <= str.size () - n; ++ i)
{
sub_str = str.substr (i, n);
pr = my_map.insert (pair <string, int> (sub_str, 0));
if (!pr.second)
{
++ ans;
}
}
cout <<ans <<endl; 模板2 (set):
int ans = 0;
set <string> my_set;
pair <set <string> :: iterator, bool> pr; for (int i = 0; i <= str.size () - n; ++ i)
{
sub_str = str.substr (i, n);
pr = my_set.insert (sub_str);
if (!pr.second)
{
ans ++;
}
}
cout << ans <<endl;
**/

C/C++代码实现 (map):

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <stack>
#include <queue>
#include <map> using namespace std; int main ()
{
int T;
scanf ("%d", &T);
while (T --)
{
int n, str_len, ans = ;
string str, mid_str;
scanf ("%d", &n);
cin >>str;
str_len = str.size(); map <string, int> my_map;
pair <map <string, int> :: iterator, bool> pr; for (int i = ; i <=str_len - n; ++ i)
{
mid_str = str.substr (i, n);
pr = my_map.insert (pair <string, int> (mid_str, ));
if (!pr.second)
{
++ ans;
}
} printf ("%d\n", ans);
}
return ;
}

C/C++代码实现 (set):

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <stack>
#include <queue>
#include <map>
#include <set> using namespace std; int main ()
{
int T;
scanf ("%d", &T);
while (T --)
{
int n, str_len, ans = ;
string str, mid_str;
scanf ("%d", &n);
cin >>str;
str_len = str.size(); set <string> my_set;
pair <set <string> :: iterator, bool> pr; for (int i = ; i <=str_len - n; ++ i)
{
mid_str = str.substr (i, n);
pr = my_set.insert (mid_str);
if (!pr.second)
{
++ ans;
}
} printf ("%d\n", ans);
}
return ;
}

nyoj 1112 求次数 (map)的更多相关文章

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

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

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

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

  3. 求一个Map中最大的value值,同时列出键,值

    求一个Map中最大的value值,同时列出键,值 方法1. public static void main(String[] args){  Map map=new HashMap();  map.p ...

  4. ACM题目————STL练习之求次数

    题目地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=1112 描述 题意很简单,给一个数n 以及一个字符串str,区间[i,i+n-1] 为一个 ...

  5. nyoj最少乘法次数——快速幂思想

    最少乘法次数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘.如24:2*2 ...

  6. nyoj 117 求逆序数 (归并(merge)排序)

    求逆序数 时间限制:2000 ms  |  内存限制:65535 KB 难度:5   描述 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中 ...

  7. nyoj 95-众数问题 (map)

    95-众数问题 内存限制:64MB 时间限制:3000ms 特判: No 通过数:16 提交数:29 难度:3 题目描述: 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的 ...

  8. nyoj 表达式求值

    35-表达式求值 内存限制:64MB 时间限制:3000ms Special Judge: Noaccepted:19 submit:26 题目描述: ACM队的mdd想做一个计算器,但是,他要做的不 ...

  9. NYOJ 117 求逆序数 (树状数组)

    题目链接 描述 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中逆序的总数就称为这个排列的逆序数. 现在,给你一个N个元素的序列,请你判断出 ...

随机推荐

  1. MySQL 插入记录时自动更新时间戳

    将字段设置成timestamp类型,同时默认值设置成 CURRENT_TIMESTAMP.

  2. 数据结构4_java---顺序串,字符串匹配算法(BF算法,KMP算法)

    1.顺序串 实现的操作有: 构造串 判断空串 返回串的长度 返回位序号为i的字符 将串的长度扩充为newCapacity 返回从begin到end-1的子串 在第i个字符之前插入字串str 删除子串 ...

  3. halcon小结

    持更 应用范围 (罗列自官方帮助文档,以后有空了按照需求展开叙述) 1. 安全系统 2. 表面检测 3. 定位 4. 二维测量比较 5. 二维码识别 6. 二维位置定位 7. 二维物体识别 8. 光学 ...

  4. 12.Linux重定向与管道|

    1.重定向概述 1.1什么是重定向 将原本要输出到屏幕的数据信息,重新定向到某个指定的文件中 名称 文件描述符 作用 标准输入(STDIN) 0 默认是键盘,也可以是文件或其他命令的输出. 标准输出( ...

  5. 记因git规范导致的提测和发布延迟

    号外 最近因为换工作的原因,我的博客和Github没有像之前那样频繁的更新了.一方面原因是投递简历和准备面试,由于之前的基础没有很扎实,需要把平时的知识点都整理一遍.这个时间段持续了20多天的样子,因 ...

  6. Uipath 选择页面下拉列表中的选项

    http://www.rpatokyo.com/ 使用Select item Activity选择页面下拉列表中的选项 在open browser中拖入Select Item Activity,配置参 ...

  7. vmware14安装centos7的步骤(图文详解)

    一.centos的安装 centos分为桌面版和黑屏版(命令行版):在这里我使用的是命令行版. 这里选择安装程序光盘映像文件,文件就是centos7的iso文件. 虚拟机的名称和位置自行设置; 虚拟机 ...

  8. ESP8266开发之旅 应用篇② OLED显示天气屏

    1.前言     这一篇,博主将教大家怎么去实现一个简易版本的天气助手.     先来一个博主已经实现功能的图片,如下: 1.1 知识储备     本篇需要用到以下知识点: 运用到ArduinoJso ...

  9. linux 中more、less 和 most 的区别

    如果你是一个 Linux 方面的新手,你可能会在 more.less.most 这三个命令行工具之间产生疑惑.在本文当中,我会对这三个命令行工具进行对比,以及展示它们各自在 Linux 中的一些使用例 ...

  10. java代码实现MD5加密及验证方法

    MD5加密 在我们的程序中,不管是什么,都会有安全问题,今天就说的是MD5加密的方法 MD5是哈希算法,也就是 从明文A到密文B很容易,但是从密文B到明文A几乎不可能 也就是说,给你密文,是几乎无法通 ...