0 引言
题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符
a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
1 抽象问题具体化
举例1: 输入abbc,按照字典顺序输出所有可能排列.
输出:abbc, abcb, acbb, bbac, bbca, bcab, bcba, cabb, cbab, cbba. 总共十种情况
举例2:输入abbbc,按照字典顺序输出所有可能排列.
输出: abbbc, abbcb, abcbb, acbbb, babbc, bbabc, bbbac, bbbca, bbcba, bcbba,
2 具体问题抽象分析
(1)排序
(2)生成序列,打印
(3)保证前后的两个序列不重复
3 demo
1. 排序算法用插入排序即可
for(int i=1;i<str.size(); ++i){
for(int j=i; j>0; --j){
if((str[j]-str[j-1]) < 0){
char temp = str[j];
str[j] = str[j-1];
str[j-1] = temp;
}
}
}
2. 生成序列
3. 判断两个序列是否重复