結果
| 問題 | No.430 文字列検索 | 
| コンテスト | |
| ユーザー |  neterukun | 
| 提出日時 | 2020-05-05 02:25:30 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 336 ms / 2,000 ms | 
| コード長 | 1,705 bytes | 
| コンパイル時間 | 235 ms | 
| コンパイル使用メモリ | 82,076 KB | 
| 実行使用メモリ | 85,088 KB | 
| 最終ジャッジ日時 | 2024-11-10 00:43:44 | 
| 合計ジャッジ時間 | 4,095 ms | 
| ジャッジサーバーID (参考情報) | judge3 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | AC * 14 | 
ソースコード
class TrieNode:
    """Trie用のノード用クラスであり、
    子供のポインタ(辞書で管理)とノードが有効かどうかを持つ"""
    def __init__(self, s):
        self.child = {}
        self.valid = False
    def set_child(self, s):
        self.child[s] = TrieNode(s)
    def get_child(self, s):
        if s not in self.child:
            return None
        return self.child[s]
class Trie:
    """Trie木: 文字列の検索、追加、削除をO(|検索する文字列長さ|)で行う"""
    def __init__(self):
        self.root = TrieNode(None)
    def search(self, string: str) -> bool:
        """集合に文字列が存在するかどうかを返す"""
        ptr = self.root
        for s in string:
            if ptr.get_child(s) is None:
                return False
            ptr = ptr.get_child(s)
        return ptr.valid
    def insert(self, string: str):
        """集合に文字列を追加する"""
        ptr = self.root
        for s in string:
            if ptr.get_child(s) is None:
                ptr.set_child(s)
            ptr = ptr.get_child(s)
        ptr.valid = True
    def delete(self, string: str):
        """集合から文字列を削除する"""
        ptr = self.root
        for s in string:
            if ptr.get_child(s) is None:
                return
            ptr = ptr.get_child(s)
        ptr.valid = False
s = input()
m = int(input())
c = [input() for i in range(m)]
tr = Trie()
for string in c:
    tr.insert(string)
ans = 0
for i in range(len(s)):
    for length in range(1, 11):
        if i + length > len(s):
            break
        if tr.search(s[i:i + length]):
            ans += 1
print(ans)
            
            
            
        