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

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

题目描述

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。 
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。

 

这个题思路不难,大致思路是

把第一个字母看做一部分,后面的所有字母看做一部分。用第一个字母和后面的所有字母依次交换,每交换一次把后一部分的字符串执行相应的操作。执行完之后,再把这一层刚刚换了的两个字母换回来,再用第一个和后面部分的下一个互换,反复执行

 

注意:可是这个有一个步骤是需要互换的,这个就很烦,最开始想到了用数组,后来感觉输出还要转成string存进ArrayList类型变量中,就放弃了。准备用Stringbuffer类的设置某一的索引位的字符,可是对java的类库不熟。。。本地测试成功了,可是在线oj一直不行。

于是看了大家的讨论,发现原来 new string(参数这里可以传入字符类型的数组),简直太方便了,以前还各种循环拼起来。 这样的话就用数组做,也不麻烦。

还需要注意一点就是万一原字符串是  aab类似的,这样包看会不会重复,可以用arraylist的contains的方法判断

代码参考来自 牛课网 老石基

 

import java.util.*;public class Solution {    public ArrayList
Permutation(String str) { ArrayList
result = new ArrayList
(); if(str==null||str.length()==0) return result; char[] c = str.toCharArray(); Permutation(result, c, 0, c.length); Collections.sort(result); return result; } public void Permutation(ArrayList
list,char[] c, int star,int end){ if(star==end-1){ String result = new String(c); if(!list.contains(result)) list.add(result); return; } //交換 for(int i = star;i

 

转载于:https://www.cnblogs.com/tobemaster/p/5907771.html

你可能感兴趣的文章
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>
Linux 配置vnc,开启linux远程桌面
查看>>
NLog文章系列——如何优化日志性能
查看>>
Hadoop安装测试简单记录
查看>>
CentOS6.4关闭触控板
查看>>
ThreadPoolExecutor线程池运行机制分析-线程复用原理
查看>>
React Native 极光推送填坑(ios)
查看>>
Terratest:一个用于自动化基础设施测试的开源Go库
查看>>
修改Windows远程终端默认端口,让服务器更安全
查看>>
扩展器必须,SAS 2.0未必(SAS挺进中端存储系统之三)
查看>>
Eclipse遇到Initializing Java Tooling解决办法
查看>>
while((ch = getchar()) != '\n')
查看>>
好程序员web前端分享JS检查浏览器类型和版本
查看>>