nyoj 1112 求次數

求次數

時間限制: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
#include <map>
#include <string>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;

map<string,int> m;

int main(){
    string s1,s2;
    int i,k,t,len,ss;
    scanf("%d",&t);
    while(t--){
        ss=0;
        m.clear();
        cin>>k>>s1;
        len=s1.length();
        for(i=0;i<len-k+1;i++){
            s2=s1.substr(i,k);
            if(m[s2]==1) ss+=1;
            else m[s2]=1;
        }
        printf("%d\n",ss);
    }
    return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章