摘要:
题目大意给定一系列电话号码,查看他们之间是否有i,j满足,号码i是号码j的前缀子串。题目分析典型的trie树结构。直接使用trie树即可。但是需要注意,若使用指针形式的trie树,则在大数据量下new/delete会很耗时,因此使用静态数组来存储trie树结构。使用静态数组代替指针在oj中常用于节省... 阅读全文
摘要:
题目大意将一副牌进行编号,四种花色分别标记为'C'、'D'、'H'、'S',数值标记为'A'、'1'、'2'、'3'、'4'、'5'、'6'、'7'、'8'、'9'、'10'、'J'、'Q'、'K',则一张牌可以标记为 “数值+花色”,比如 7D, AH, 10S等。给出N个牌的序列,每个序列视为一... 阅读全文
摘要:
Trie树结构Trie树是一种树形数据结构,又称为单词查找树、字典树,是一种用于快速检索的多叉树结构。典型应用是统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的主要设计思想是空间换时间,利用字符串的公共前缀来降低查询时间的开销。它的优点是可以最大限度的减少无谓... 阅读全文
摘要:
题目大意给出一个字符串S,S可能是多个较短的字符串的重复连接。比如"ababab"为字符串"ab"重复三次的结果;"abc" 为"abc"重复一次的结果;"abababab"可能是"abab"重复两次,也可能是"ab"重复四次的结果。对一个给定的字符串S,求出最大的k,使得它为某个子串A重复k次的结... 阅读全文
摘要:
题目大意给定字符串S,求出S的所有可能相同前后缀的长度。比如:"alala"的前缀分别为{"a", "al", "ala", "alal", "alala"}, 后缀分别为{"a", "la", "ala", "lala", "alala"}. 其中有{"a", "ala", "alala"}是相同... 阅读全文
摘要:
题目大意给定两个字符串S1, S2,求S1中包含多少个S2串。其中S1长度最大为 1000000, S2长度最大为10000。题目分析典型的字符串匹配问题,直接匹配显然会超时,考虑使用kmp算法。需要注意的是,尽量减少求串长度的strlen的执行次数。实现(c++)#define _CRT_SECU... 阅读全文
摘要:
KMP算法是字符串匹配处理中一种非常高效的算法,它的时间复杂度可以达到O(N+M),远优于普通匹配的O(NxM)。它最早是由Knuth,Morris,Pratt共同提出。 算法原理 普通的字符串匹配,假设从母串的A位置开始匹配,在某个位置B当母串和子串失配的时候匹配的起点会回溯到A+1处重新开始。而 阅读全文