【LeetCode题解】用活字字模拼出不同字母序列的数量 — 「字母活字字模排列数」问题解析
题目描述
你手中有一组活字字模,每个字模上刻有一个大写英文字母。给定一个字符串 tiles
表示这些字模上的字母集合。你想用这些字模拼出所有可能的非空字母序列,每个字模只能使用一次。
请你计算:用这些字模能拼出的不同非空字母序列总数。
具体说明
tiles
是一个只包含大写英文字母的字符串,长度在 1 到 7 之间。- 每个字模对应字符串中的一个字符。
- 你可以排列这些字母形成不同的序列,序列长度可以从 1 到
tiles.length
。 - 字模不能重复使用。
- 序列中顺序不同即视为不同序列(例如 "AB" 和 "BA" 是不同的序列)。
- 需要排除重复序列(由于有重复字母,排列时会有重复情况)。
示例
输入:"AAB"
输出:8
解释:可能的序列为 "A", "B", "AA", "AB", "BA", "AAB", "ABA", "BAA"。
输入:"AAABBC"
输出:188
输入:"V"
输出:1
解题分析
这道题的核心在于统计所有不同的排列序列数目,同时避免重复计数。