剑指offer:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
思路:本题考查递归解决问题的思路。首先将输入的字符串转化为有序字符串。将字符串分为两部分,第一个字符,和后续N-1个字符。后续问题可以用递归函数。
按顺序确定第一个字符,然后递归操作剩下的N-1个字符(要保证后面N-1个字符为有序的)。有意思的是, for (int i = index; i < len; ++i) {
if (i!=index && str[i]== str[index]) continue;// 保证当输入多个重复字符