把Java内存卡的死死的
查看原帖
把Java内存卡的死死的
585302
feishia6楼主2023/2/9 17:38

import java.io.*;

public class Main {

    static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));

    public static void main(String[] args) throws IOException {
        int n = sc.nextInt();
        TrieTree t = new TrieTree();
        while (n-- > 0) {
            String s = sc.next();
            t.insertTree(s);
        }
        int m = sc.nextInt();
        while (m-- > 0) {
            String s = sc.next();
            int x = t.Contains(s);
            if (x == 0) {
                out.println("WRONG");
            } else if (x == 1) {
                out.println("OK");
            } else if (x == 2) {
                out.println("REPEAT");
            }
        }
        out.flush();
        out.close();
    }

    static class TrieTree {
        TrieNode root;

        public TrieTree() {
            root = new TrieNode();
        }

        //插入
        public void insertTree(String s) {
            if (s.length() == 0) return;
            char[] a = s.toCharArray();
            TrieNode date = root;
            for (char c : a) {
                int index = c - 'a';
                if (date.son[index] == null) {
                    date.son[index] = new TrieNode();
                    date.son[index].value = c;
                }
                date = date.son[index];
            }
            date.isTrue = 1;
        }

        //查询
        public int Contains(String s) {
            if (s.length() == 0) return 0;
            char[] a = s.toCharArray();
            TrieNode date = root;
            for (char c : a) {

                int index = c - 'a';
                if (date.son[index] != null) {
                    date = date.son[index];
                } else {
                    return 0;
                }
            }
            int x = date.isTrue;
            if (x == 1) {
                date.isTrue++;
                return 1;
            } else if (x >= 2) {
                return x;
            }
            return 0;
        }
    }

    static class TrieNode {
        char value;
        TrieNode[] son;
        int isTrue;

        public TrieNode() {
            son = new TrieNode[26];
            isTrue = 0;
        }
    }

    //快读部分
    static class sc {
        static final StreamTokenizer sc = new StreamTokenizer(new InputStreamReader(System.in));

        static int nextInt() throws IOException {
            sc.nextToken();
            return (int) sc.nval;
        }

        static String next() throws IOException {
            sc.nextToken();
            return sc.sval;
        }
    }
}

2023/2/9 17:38
加载中...