博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指Offer_27_字符串的排列
阅读量:5116 次
发布时间:2019-06-13

本文共 1191 字,大约阅读时间需要 3 分钟。

题目描述

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。 

输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。

解题思路

首先固定第一位,然后递归处理后面的位,每次递归中与当前位后面的每一位交换,知道处理到最后一位。由于要按照字母顺序输出,需要对列表排序。

实现

import java.util.ArrayList;import java.util.Collections;public class Solution {    public ArrayList
Permutation(String str) { ArrayList
list = new ArrayList<>(); if (str == null || str.length() <= 0) return list; char[] chars = str.toCharArray(); recursion(chars, list, 0); Collections.sort(list); return list; } private void recursion(char[] chars, ArrayList
list, int i) { if (i == chars.length) { list.add(String.valueOf(chars)); } for (int j = i; j < chars.length; j++){ if (i !=j && chars[i] == chars[j]) continue; swap(chars, i, j); recursion(chars, list, i+1); swap(chars, i, j); } } private void swap(char[] chars, int i, int j) { char tmp = chars[i]; chars[i] = chars[j]; chars[j] = tmp; }}

转载于:https://www.cnblogs.com/ggmfengyangdi/p/5779076.html

你可能感兴趣的文章
yii 跳转页面
查看>>
洛谷 1449——后缀表达式(线性数据结构)
查看>>
Data truncation: Out of range value for column 'Quality' at row 1
查看>>
Dirichlet分布深入理解
查看>>
(转)Android之发送短信的两种方式
查看>>
字符串处理
查看>>
HtmlUnitDriver 网页内容动态抓取
查看>>
ad logon hour
查看>>
获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName...
查看>>
证件照(1寸2寸)拍摄处理知识汇总
查看>>
罗马数字与阿拉伯数字转换
查看>>
Eclipse 反编译之 JadClipse
查看>>
Python入门-函数
查看>>
[HDU5727]Necklace(二分图最大匹配,枚举)
查看>>
距离公式汇总以及Python实现
查看>>
一道不知道哪里来的容斥题
查看>>
Blender Python UV 学习
查看>>
window添加右键菜单
查看>>
入手腾龙SP AF90mm MACRO
查看>>
Window7上搭建symfony开发环境(PEAR)
查看>>