《剑指offer》字符串的排列
来源:互联网 发布:淘宝店铺名称怎么改 编辑:程序博客网 时间:2024/06/07 21:00
题目:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
解析:如果各位想一下吞口大胖子,大家可能会想多了,这题不仅仅需要全排列、还需要去重以及排序,主要先做全排列,后面的就好做了。
import java.util.ArrayList;import java.util.Collections;public class Solution { ArrayList<String> result = new ArrayList<>();//保留输出结果 public ArrayList<String> Permutation(String str) { if(str.length()==0){ return result; } char [] chars=str.toCharArray(); printChars(chars,0,str.length()); Collections.sort(result);//输出的字符串需要排序 return result; } public void printChars(char []chars,int from, int to){ if(from==to){ String s=""; for(char c :chars){ s+=c; } if(!result.contains(s)){//注意去重 result.add(s); } } for(int i=from;i<to;i++){ swap(chars,from,i);//后面的每一个需要与第一个字母交换 printChars(chars,from+1,to);//剩下的做全排列 swap(chars,from,i);//把交换的复位 } } //交换 public void swap(char []chars,int from ,int to){ char temp =chars[from]; chars[from]=chars[to]; chars[to]=temp; }}
阅读全文
0 0
- 【剑指offer】字符串的排列
- 剑指offer--字符串的排列
- 《剑指offer》字符串的排列
- 【剑指Offer】字符串的排列
- 剑指offer--字符串的排列
- 剑指offer:字符串的排列
- 剑指offer:字符串的排列
- 剑指offer:字符串的排列
- [剑指offer]字符串的排列
- 《剑指offer》-字符串的排列
- 剑指offer|字符串的排列
- 【剑指offer】字符串的排列
- 《剑指offer》字符串的排列
- 剑指Offer:字符串的排列
- 【剑指offer】字符串的排列
- 剑指offer-字符串的排列
- 剑指offer 字符串的排列
- 剑指offer 字符串的排列
- 数据科学入门—数据可视化
- 比较Oralce 数据库和 SQL Server 数据库
- Ceph架构剖析
- Bootstrap Table导出Excel
- Sass
- 《剑指offer》字符串的排列
- eclipse工具web工程热部署
- Java 面向对象_5
- 17.7.11B组总结
- 12.React中文之对React的思考
- Python从二进制文件中提取Exponent和Modulus数据(e, n)并构建公钥
- 知识图谱5-【继续看论文《Neural Relation Extraction with Selective Attention over Instances》】
- Android使用echarts
- Python RE模块中search()和match()的区别