完成一个方法,返回一种排列组合的所有字符串结果的数目。排列组合的规则如下:
1)排列组合的的字符串由a~z 26个小写字母组成;
2)方法入参为每个字符串长度;
3)每个字符串中的后一个字符的字母顺序要大于前一个字符; 例如:abc 合法;bac、aac 不合法;
这个问题没有头绪,递归好像不好实现,望大家答疑解惑!
完成一个方法,返回一种排列组合的所有字符串结果的数目。排列组合的规则如下:
1)排列组合的的字符串由a~z 26个小写字母组成;
2)方法入参为每个字符串长度;
3)每个字符串中的后一个字符的字母顺序要大于前一个字符; 例如:abc 合法;bac、aac 不合法;
这个问题没有头绪,递归好像不好实现,望大家答疑解惑!
aac不行,说明不能重复
1~26个不重复
x=1,y=26
x=2,y=25+24+...+1
x=3,y=(24+23+...+1)+(23+22+...+1)+...(2+1)+1
...
x=26,y=1
两种思路,第一种不递归
用一个list,然后用循环把所有可能的字符串
例如x=4,则是aaaa,aaab,...baaa,baab,...zzzz全都枚举,并进行你上述的规则校验,校验通过就判断list中是否有了,没有就放进去,最后list的size就是结果。
第二种,递归
假设x=3,第一个字母有a~z(y和z经过校验不可以),然后取第二个字母,取第三个字母,每次取出字母都要符合你的规则,取完回到取第一个字母,依次,直到第一个字母取不出(假设字母是1~26,如果x=20,那么7也就是g是最后能取出的,h就取不出了)则递归结束,每取完一遍用计数器+1,递归完成时,计数器的数字就是结果。