c语⾔字符串索引,使⽤字符串索引数组(C)
c语言如何创建字符串数组如果您的问题符合以下假设,那么您实施的解决⽅案最好.
>对于每个有效字符,随机选择下⼀个字符串的最右边的字符,概率相等
>序列的开始总是不⼀样(它是随机的).
原因:
当我第⼀次阅读你的问题时,我提出了以下树:(为了简单起见,将你的问题缩减为长度为3个字符的字符串,并且只有2个可能的字符A和B)注意,根节点的最左边的⼦节点(在这种情况下是AAA)是总是与根节点(AAA)相同,因此我没有进⼀步构建该分⽀.
AAA
/ \
AAB
/ \
ABA ABB
/ \ / \
BAA BAB BBA BBB
在这个树中,每个节点都有下⼀个可能的序列作为⼦节点.要改进缓存,您需要使⽤⼴度优先遍历来遍历此树,并以相同的顺序将其存储在数组中.对于上⾯的树,我们得到以下字符串索引组合.
> AAA 0
> AAB 1
> ABA 2
> ABB 3
> BAA 4
> BAB 5
> BBA 6
> BBB 7
假设值(A)= 0且值(B)= 1,则可以将索引计算为
index = 2^0 * (value(string[2])) + 2^1 * (value(string[1])) + 2^2 * (value(string[0]))
这与您使⽤的解决⽅案相同.
我已经编写了⼀个python脚本来检查其他组合(⽐如长度为4个字符的字符串,其中A B C为可能的字符). Script link
因此,除⾮在开始时做出的两个假设是错误的,否则您的解决⽅案已经处理了缓存优化.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论