蓝桥杯 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个字符,判断是否能通过乱序排列组成密码,匹配就计数。

相关推荐
C++ 老炮儿的技术栈36 分钟前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
leisoo80971 小时前
财报数据怎么排雷本地化Python构建财务异常预警系统
人工智能·python·算法
qz_Serene2 小时前
C++:类和对象(上)
开发语言·c++
luj_17683 小时前
塔防牌:策略与卡牌的智慧碰撞
服务器·c语言·开发语言·经验分享·算法
郝学胜-神的一滴4 小时前
干货版《算法导论》17:二叉树核心原理、遍历逻辑与高阶实操全解
数据结构·c++·python·算法·计算机·编程
爱编程的小新☆4 小时前
【LeetCode】从递归到 Flood Fill:5 道题吃透 DFS 的选择、回溯与标记
java·算法·leetcode·深度优先·回溯·flood fill
Water_Sunzhipeng4 小时前
2024牛客暑期多校训练营1
算法
hetao17338374 小时前
2026-08-09~08-14 hetao1733837 的刷题记录
c++·算法
技术小黑4 小时前
RNN算法实战系列06 | LSTM 实现糖尿病探索与预测
rnn·算法·lstm
Lzh编程小栈4 小时前
【嵌入式底层】SPI超透彻详解:通信原理、四线结构、四种模式、寄存器底层 + 面试全集
c语言·stm32·单片机·面试·职场和发展