每日一题-----许某答

我 有 个 朋 友 姓 木 2022-08-08 19:14:42
加精
#include <bits/stdc++.h>
using namespace std;

#define db double
#define ll long long
#define inf 0x3f3f3f3f
#define s(a, n) memset(a, n, sizeof(a))
#define debug(a) cout << '#' << a << '#' << endl
#define rep(l, a, b) for (register ll l = a; l < b; ++l)
#define per(l, a, b) for (register ll l = a; l >= b; --l)
#define _ios ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
#define _forit(i, c) \
    for (__typeof__((c).begin()) i = (c).begin(); i != (c).end(); ++i)

bool fi = true;
const unsigned long long MOD = 1e9 + 7;

inline ll gcd(ll a, ll b) { return (b == 0 ? a : gcd(b, a % b)); }

int cnt;
int trie[1000005][26];
int ex[1000005];

char s[1000005];

void insert(char *l) {
    int n = strlen(l);
    int p = 0;
    // cnt = 0;
    rep(i, 0, n) {
        int c = l[i] - 'a';
        // assert(trie[p][c]);
        // printf("&& trie p c:%d, p:%d &&\n", trie[p][c], p);
        if (!trie[p][c]) trie[p][c] = ++cnt;
        p = trie[p][c];
    }
    ex[p] = 1;
}

int find(char *l) {
    int p = 0;
    int n = strlen(l);
    rep(i, 0, n) {
        int c = l[i] - 'a';
        if (!trie[p][c]) return 0;
        p = trie[p][c];
    }
    if (ex[p] == 1) {
        ex[p] = -1;
        return 1;
    }
    return ex[p];
}

char ans[3][10] = {"REPEAT\0", "WRONG\0", "OK\0"};

int main() {
    cnt = 0;
    s(ex, 0);
    s(trie, 0);
    int n;
    scanf("%d", &n);
    rep(i, 0, n) {
        scanf("%s", s);
        insert(s);
    }
    scanf("%d", &n);
    rep(i, 0, n) {
        scanf("%s", s);
        printf("%s\n", ans[find(s) + 1]);
    }
    return 0;
}

 

...全文
22 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-编程语言 发布问题, 以便更快地解决您的疑问

50,781

社区成员

发帖
与我相关
我的任务
社区描述
和众多高校算法内卷分子,一起学习和交流算法那。浓郁的算法交流氛围,拒绝躺平,有效内卷。加入我们,私信我拉你入核心内卷群。
算法数据结构leetcode 个人社区
社区管理员
  • 执 梗
  • Dream-Y.ocean
  • ღCauchyོꦿ࿐
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

 刷题!

试试用AI创作助手写篇文章吧