蓝桥杯 16. 密文搜索

密文搜索

原题目链接

题目描述

福尔摩斯从 X 星收到一份资料,全部是小写字母组成。

他的助手提供了另一份资料:许多长度为 8 的密码列表。

福尔摩斯发现,这些密码是被打乱后隐藏在先前那份资料中的。

请你编写一个程序,从第一份资料中搜索可能隐藏密码的位置。要考虑密码的所有排列可能性。


输入描述

  • 第一行:一个字符串 s,全部由小写字母组成,长度小于 1024×1024。
  • 第二行:一个整数 n,表示以下有 n 行密码,1 ≤ n ≤ 1000
  • 接下来 n 行,每行是一个字符串,均由小写字母组成,长度都为 8。

输出描述

输出一个整数,表示每行密码的所有排列在 s 中匹配次数的总和。


输入输出样例

输入

in 复制代码
aaaabbbbaabbcccc
2
aaaabbbb
abcabccc

输出

out 复制代码
4

c++代码

cpp 复制代码
#include<bits/stdc++.h>

using namespace std;

int main() {
    string str, s;
    cin >> str;
    int n, cont = 0;
    cin >> n;
    vector<string> mid;
    while(n--) {
        cin >> s;
        sort(s.begin(), s.end());
        mid.push_back(s);
    }
    for (int i = 0; i < str.size() - 7; i++) {
        s = str.substr(i, 8);
        sort(s.begin(), s.end());
        for (string k : mid) {
            if (k == s) cont++;
        }
    }
    cout << cont;
    return 0;
}//by wqs

题目解析

在字符串 s 中,用滑动窗口,每次取连续8个字符,判断是否能通过乱序排列组成密码,匹配就计数。

相关推荐
老天文学家了12 分钟前
蓝桥杯-不完整的算式
数据库·职场和发展·蓝桥杯
AndrewHZ12 分钟前
【ISP算法精粹】什么是global tone mapping和local tone mapping?
人工智能·深度学习·算法·计算机视觉·视觉算法·isp算法·色调映射
丛烨19 分钟前
C++并发性能优化思路
c++·性能优化
虾球xz28 分钟前
游戏引擎学习第299天:改进排序键 第二部分
c++·学习·算法·游戏引擎
ALex_zry29 分钟前
程序运行报错分析文档
android·c++
IC 见路不走35 分钟前
LeetCode 第61题:旋转链表
算法·leetcode·链表
百里东风40 分钟前
蓝桥杯框架-LED蜂鸣器继电器
c++·单片机·51单片机
小猿_0042 分钟前
蓝桥杯分享经验
职场和发展·蓝桥杯
阿方.9181 小时前
《C 语言 sizeof 与 strlen 深度对比:原理、差异与实战陷阱》
算法
制冷男孩1 小时前
机器学习算法-聚类K-Means
算法·机器学习·聚类