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

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

题目描述:

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

思路分析:

  字典序全排列

  1.从后向前找到第一对正序的si-1和si,保存si-1的下标。
  2.找到si-1后面最后一个比它大的值,将值和si-1交换。
  3.将si-1后面的所有数逆序,即得到当前序列的下一个排列。

代码:

/**字典序全排列1.从后向前找到第一对正序的si-1和si,保存si-1的下标。2.找到si-1后面最后一个比它大的值,将值和si-1交换。3.将si-1后面的所有数逆序,即得到当前序列的下一个排列。*/import java.util.*;public class Solution {    public ArrayList
Permutation(String str) { ArrayList
res=new ArrayList<>(); if(str==null||str.length()==0) return res; char[]s=str.toCharArray(); Arrays.sort(s); while(true){ int flag=-1; res.add(new String(s)); for(int i=s.length-1;i>0;i--){ //第一步 if(s[i-1]
flag;j--){ //第二步 if(s[j]>s[flag]){ char temp=s[j]; s[j]=s[flag]; s[flag]=temp; break; } } reverse(s,flag+1,s.length-1); //第三步 } return res; } public void reverse(char[]s,int start,int end){ while(start

转载于:https://www.cnblogs.com/yjxyy/p/10772821.html

你可能感兴趣的文章
区块链入门教程
查看>>
npm常用命令
查看>>
南海区行政审批管理系统接口规范v0.3(规划)4.2.【queryExpireList】当天到期业务查询...
查看>>
[置顶] 细说Cookies
查看>>
[wp7软件]wp7~~新闻资讯,阅读软件下载大全! 集合贴~~~
查看>>
生成指定位数随机数的方法
查看>>
Essential C++学习笔记
查看>>
where,having与 group by连用的区别
查看>>
【MySQL】MySQL锁和隔离级别浅析二 之 INSERT
查看>>
Oracle T4-2 使用ILOM CLI升级Firmware
查看>>
4.14上午
查看>>
数据分析 -- 白话一下什么是决策树模型(转载)
查看>>
Java SPI机制原理和使用场景
查看>>
web前端java script学习2017.7.18
查看>>
删除TXPlatform
查看>>
LaTex:图片排版
查看>>
并发访问超时的问题可能性(引用)
查看>>
中小团队基于Docker的Devops实践
查看>>
利用python打开摄像头并保存
查看>>
System函数的使用说明
查看>>