含重复字符的Lexicographic Rank计算技术问询
计算含重复字符的指定字符串在全长度组合中的字典序排名
我正在尝试计算含重复字符的给定字符串在任意字符集下的字典序排名。目前找到的示例都是针对输入字符串的变位词求解字典序排名,并不适用于这种基于任意字符集、包含所有1到指定最大长度组合的场景。
输入
- 字符集:
A,B,C - 输入字符串:
BAA(注意输入中不含C) - 最大长度:
3(需包含长度为1、2、3的所有字符组合)
输出
- 排名结果:16
说明
- 允许字符重复出现
- 所有符合要求的组合共39种(涵盖1、2、3字符的排列)
- 实际场景会涉及更大的字符集和更长的最大字符串长度,因此不能采用生成所有组合的暴力方法求解
所有有序组合(按字典序排列)
- A
- AA
- AAA
- AAB
- AAC
- AB
- ABA
- ABB
- ABC
- AC
- ACA
- ACB
- ACC
- B
- BA
- BAA
- BAB
- BAC
- BB
- BBA
- BBB
- BBC
- BC
- BCA
- BCB
- BCC
- C
- CA
- CAA
- CAB
- CAC
- CB
- CBA
- CBB
- CBC
- CC
- CCA
- CCB
- CCC
内容的提问来源于stack exchange,提问作者SoonGuy
相关产品推荐
相关产品推荐

