求助|面试题:找出所有可能的成语接龙序列
612
2024.03.20
2024.03.20
发布于 未知归属地

现有一张成语表,表结构如下:

CREATE TABLE `game_idiom` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `word` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  `pinyin` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  `abbreviation` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  `explanation` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `word` (`word`) COMMENT '成语唯一',
  KEY `pinyin` (`pinyin`)
) ENGINE=InnoDB AUTO_INCREMENT=30896 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

表中数据大概3w条。
语言不限。

如何找出所有可能的不重复的成语接龙,并存储到新的MySQL表,下次用户在来查找就直接取结构表即可,加快响应速度:

  • 从原始成语表中读取所有成语。
  • 遍历每个成语,查找以当前成语最后一个字开头的所有成语。
  • 递归地构建所有可能的接龙序列,注意这里要处理一些边界情况,例如防止无限循环(例如,存在循环接龙的成语);
  • 将接龙序列存储到新的MySQL表中。
评论 (2)