9. 蛮力字符串查找

1 题目描述

蛮力字符串查找

成绩10开启时间2021年09月30日 星期四 18:00
折扣0.8折扣时间2021年10月18日 星期一 00:00
允许迟交关闭时间2021年12月1日 星期三 00:00

小林和小红在做一个匹配单词的小游戏,小林给出N个单词和一个字符串T,小红需要在给出的单词里面找出所有以T为前缀的单词,并按字典序进行排序。

输入格式

输入第一行为正整数 N (1 ≤ N ≤ 1000)

接下来 N 行,每行一个单词,长度不超过 100;

最后一行包含字符串 T。

均为小写字母

输出格式

按字典序升序输出答案。如果不存在符合条件的单词,则输出 "No Result! "(不包括引号)

 

 测试输入 期待的输出 时间限制 内存限制 额外进程
测试用例 1以文本方式显示
  1. 6↵
  2. na↵
  3. no↵
  4. ki↵
  5. ki↵
  6. ka↵
  7. ku↵
  8. k↵
以文本方式显示
  1. ka↵
  2. ki↵
  3. ki↵
  4. ku↵
1秒64M0
测试用例 2以文本方式显示
  1. 5 ↵
  2. a↵
  3. b↵
  4. c↵
  5. d↵
  6. e↵
  7. f↵
以文本方式显示
  1. No Result!↵
1秒64M0
测试用例 19以文本方式显示
  1. 137↵
  2. aabbbaaaaabbbbaabbbbaaaaaaabbabbbabababbbabaabaaabbbaabbaabbaababababbbaaab↵
  3. bbbbabbbababababbbbabbababbbbbbabbababbbaaabbabaaabbabababbbbbbabbbbba↵
  4. bbbbaabaaaaabbaabababbabababaaaaaaabbaabbbbaaabbaaabaabbabbbaabbbbaababaababb↵
  5. bbbabaabbaaaabbaabaaaababbaaabaaaaababb↵
  6. aaaaabbaaababbababbaba↵
  7. bbabaababbabaaabbbaababaaaabaaababbbaabaabbababbbbbaabab↵
  8. abbaaabaaaaaababbbaabababaaaabaabbbbbababaaaaaa↵
  9. baaabaabbabaaabbbabaabbabba↵
  10. baaababbbbabbbababaababbbaabaaaaabaaabaaabaabaaaaaabaaaabbaaabbbababbaabaabaabaabbbbaabbbabaaabbaaa↵
  11. baabaaaababaaaaabbaabaaabbaaaaababaaabbaabaabbbaabbaa↵
  12. bbaabaababbaabbaababbbbbaaabaaaaaabaabbaaabbbbabbbaaabbbababaaabaaabaaababaabba↵
  13. aaabaabbbbbbbbbbbababbbbaaabaabbbabbbabaaabbbbbaaababb↵
  14. baaabbabbabbabbaabbaabababbabbbbbbabaa↵
  15. abbabbbabbaabaaaabaaabbabbabbbaaabaaabbbbbaabaabbbaaa↵
  16. bbaab↵
  17. bababbaaabaaabbaabbaaabaaaabbbabaabbbaaaaaabbbbbbbbbbbbbbbabaaabbbbaaabbbabbbaaababbbabaabbaa↵
  18. baabbbaababaababbaaaabbabbbbaaabbababaaaaaaababababbbbbabbbbbaabaabaaabbbabaababaabbbbaaabbbbaa↵
  19. bbb↵
以文本方式显示
  1. aaaaaaaabbabaaababaaabbabaaaabababbbaaabaaabaaaabbbabbaaabaaaaaaabababaabbbaabbaaaabbbaabbbaababaaba↵
  2. aaaaaababaaaabbbababaaaaaaaabbaaba↵
  3. aaaaaabbbababbbabbaaabbbabbbaababbabbbbbaaabbbbabaaaba↵
  4. aaaaaabbbbbaababbaaabbbabbaaababaabababaaabbbabbaabbbbbbbbaabbaabbbbaabaaaab↵
  5. aaaaabbaaababbababbaba↵
  6. aaaabaabbaabaaaaabbaaaaaaaababaaabbbbbaababaaabbabbaaabbbbbbaaaaabbbabbabbaaaababab↵
  7. aaaababbaaaabbbabbbabba↵
  8. aaaababbba↵
  9. aaaabbbaaaabbbabaababbbabbbababbbbbbbbabbabaabbababaabbaababbbbbaaabbabbbbbbbbbbbbbbabaababa↵
  10. aaabaabaabaaaaabb↵
  11. aaabaabbbbbbbbbbbababbbbaaabaabbbabbbabaaabbbbbaaababb↵
  12. aaababababaabbaaaba↵
  13. aaabbababbabbbbaaabaabbbaababbaabababbaaaaabaaaabbbbabbbabbabbaaa↵
  14. aaabbabbbabbabaabbaaabaaabbbbabababbbbbabbbbbbbbbbaababbbabaabbbbbbbbbaababbbbabbaab↵
  15. aaabbbaabbaaabaabbbbabbabbabbabab↵
  16. aaabbbbbaaba↵
1秒64M0
测试用例 20以文本方式显示
  1. 137↵
  2. aabbbaaaaabbbbaabbbbaaaaaaabbabbbabababbbabaabaaabbbaabbaabbaababababbbaaab↵
  3. bbbbabbbababababbbbabbababbbbbbabbababbbaaabbabaaabbabababbbbbbabbbbba↵
  4. bbbbaabaaaaabbaabababbabababaaaaaaabbaabbbbaaabbaaabaabbabbbaabbbbaababaababb↵
  5. bbbabaabbaaaabbaabaaaababbaaabaaaaababb↵
  6. aaaaabbaaababbababbaba↵
  7. bbabaababbabaaabbbaababaaaabaaababbbaabaabbababbbbbaabab↵
  8. abbaaabaaaaaababbbaabababaaaabaabbbbbababaaaaaa↵
  9. baaabaabbabaaabbbabaabbabba↵
  10. baaababbbbabbbababaababbbaabaaaaabaaabaaabaabaaaaaabaaaabbaaabbbababbaabaabaabaabbbbaabbbabaaabbaaa↵
  11. baabaaaababaaaaabbaabaaabbaaaaababaaabbaabaabbbaabbaa↵
  12. bbaabaababbaabbaababbbbbaaabaaaaaabaabbaaabbbbabbbaaabbbababaaabaaabaaababaabba↵
  13. aaabaabbbbbbbbbbbababbbbaaabaabbbabbbabaaabbbbbaaababb↵
  14. baaabbabbabbabbaabbaabababbabbbbbbabaa↵
  15. abbabbbabbaabaaaabaaabbabbabbbaaabaaabbbbbaabaabbbaaa↵
  16. bbaab↵
  17. bababbaaabaaabbaabbaaabaaaabbbabaabbbaaaaaabbbbbbbbbbbbbbbabaaabbbbaaabbbabbbaaababbbabaabbaa↵
  18. baabbbaababaababbaaaabbabbbbaaabbababaaaaaaababababbbbbabbbbbaabaabaaabbbabaababaabbbbaaabbbbaa↵
  19. bbb↵
以文本方式显示
  1. aaaaaaaabbabaaababaaabbabaaaabababbbaaabaaabaaaabbbabbaaabaaaaaaabababaabbbaabbaaaabbbaabbbaababaaba↵
  2. aaaaaababaaaabbbababaaaaaaaabbaaba↵
  3. aaaaaabbbababbbabbaaabbbabbbaababbabbbbbaaabbbbabaaaba↵
  4. aaaaaabbbbbaababbaaabbbabbaaababaabababaaabbbabbaabbbbbbbbaabbaabbbbaabaaaab↵
  5. aaaaabbaaababbababbaba↵
1秒64M0

2 代码

// C语言可以利用strstr()函数
/* 函数用法例子在下面
#include <stdio.h>
#include <string.h> 
int main()
{   
    // 这个返回的是第一次出现的地址,所以对于注释的声明来说子串是NOOBF
    // const char haystack[20] = "RUNOOBF";
    const char haystack[20] = "RUNOOB";
    const char needle[10] = "NOOB";
    char *ret;
    
    ret = strstr(haystack, needle);
    
    printf("子字符串是: %s\n", ret);
    
    return(0);
}
*/

/*c++*/
/*c++字符串的find函数 s.find(t),在s中查找t,返回值为int,是t在s中第一次出现的下标,
针对这道题,如果返回值不是0,就不是前缀,就不是要查找的字符串,之后对符合条件的字符串排序即可*/


#include<bits/stdc++.h> 
using namespace std;
#define N 1000

int main(int argc, char *argv[]){
    int n;
    string str[N],needle,ans[N];
    int i,j;
    int length;//保存needle的长度
    int p=0;//用来遍历ans

    freopen("file in.txt","r",stdin);
    cin>>n;
    for(i=0;i<n;i++){
        cin>>str[i];
    }
    cin>>needle;

    length = needle.size();
    for(i=0;i<n;i++){
        // 对str里面n个字符串进行遍历
        for(j=0;j<length;j++){
            // 对每一个字符的前length位进行遍历
            if(str[i][j] != needle[j]){
                // 有不同,跳出循环,对比下一个字符串
                break;
            }            
        } 
        // 对比完了之后
        if(j==length){
            // 如果上面的循环走完了,没有跳出来说明是有含在里面的
            ans[p++] = str[i];
        }       
    }
    if(p==0){
        // 如果ans里面一个都没有保存的话说明没有
        cout<<"No Result!"<<endl;
    }
    else{
        // ans里面并不空,对其进行排序
        /*sort(begin,end,greater<data-type>())是升序;
          sort(begin,end,less<data-type>())是降序;
          缺少参数时默认是非降序
          里面的data-type还不太懂,不填也可以好像,没有报错

          对于向量
          sort(v.begin(),v.end())即可。
          */
        sort(ans,ans+p);
        for(i=0;i<p;i++){
            cout<<ans[i]<<endl;
        }
    }
    return 0;
}


/*
还可以利用substr()来做
if(s[i].substr(0, length) == t)//substr提取子串
			ans[p++] = s[i];
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值