一、题目描述
给定 M 个字符( a-z ) ,从中取出任意字符(每个字符只能用一次)拼接成长度为 N 的字符串,要求相同的字符不能相邻。
计算出给定的字符列表能拼接出多少种满足条件的字符串,输入非法或者无法拼接出满足条件的字符串则返回 0 。
二、输入描述
给定长度为 M 的字符列表和结果字符串的长度 N ,中间使用空格(" ")拼接。
- 0 < M < 30
- 0 < N ≤ 5
三、输出描述
输出满足条件的字符串个数。
1、输入
dde 2
2、输出
2
3、说明
给定的字符为 dde ,果字符串长度为 2 ,可以拼接成 de、ed, 共 2 种。
四、解题思路
- 使用深度优先搜索(DFS)的方法生成所有可能的满足条件的字符串。
- 递归遍历每个字符,判断当前字符是否与前一个字符相同,如果相同则跳过。
- 根据选择或跳过的情况继续向下递归,直到生成长度为 N 的字符串。
- 统计满足条件的字符串的数量&