导航:首页 > 编程语言 > java字符串全排列

java字符串全排列

发布时间:2023-02-14 21:04:11

java 输入一个字符串,打印出该字符串中字符的所有排列

实现思路:就是输入字符串后,通过递归的方式,循环每个位置和其他位置的字符。

importjava.util.Scanner;

publicclassDemo001{

publicstaticvoidmain(String[]args){
Stringstr="";

Scannerscan=newScanner(System.in);

str=scan.nextLine();

permutation(str.toCharArray(),0);
}

publicstaticvoidpermutation(char[]str,inti){
if(i>=str.length)
return;
if(i==str.length-1){
System.out.println(String.valueOf(str));
}else{
for(intj=i;j<str.length;j++){
chartemp=str[j];
str[j]=str[i];
str[i]=temp;

permutation(str,i+1);

temp=str[j];
str[j]=str[i];
str[i]=temp;
}
}
}
}

Ⅱ java 字符串排序

//这个绝对满足您的要求
import java.util.Arrays;

public class StringSort {
public static void main(String[] args) {
String ss[]={"ab","wang","hi","a","abff"};
MyString mySs[]=new MyString[ss.length];//创建自定义排序的数组
for (int i = 0; i < ss.length; i++) {
mySs[i]=new MyString(ss[i]);
}
Arrays.sort(mySs);//排序
for (int i = 0; i < mySs.length; i++) {
System.out.println(mySs[i].s);
}
}

}

class MyString implements Comparable<MyString>{
public String s;//包装String

public MyString(String s) {
this.s = s;
}

@Override
public int compareTo(MyString o) {
if(o==null||o.s==null) return 1;
if(s.length()>o.s.length()) return 1;
else if(s.length()<o.s.length()) return -1;
return s.compareTo(o.s);
}
}

Ⅲ java:字符串排序问题

public class test{
public static void main(String[] args) {
String[] str = {"acbcc","bgd","abvc","fkei","dsad","gt"};
String temp;
System.out.print("排序前数组:");
for (int i = 0; i < str.length; i++) {
System.out.print(str[i]+"\t");
}
System.out.println("");
for (int i = 0; i < str.length; i++) {
for (int j = 0; j < str.length - i - 1; j++) {
/**冒泡排序比较说明:
1.先取出每一个元素字符串第一个字符(substring(0,1)这个就是取第一个元素的字符)
2.然后将这个字符串转换成char型(charAt(0)这个就是将一个单字符串转换成char型)
3.接着将char型字符转换成整型(这一步只要是求一个字符的ASCII码,因为ASCII码是一个整型数字,这样做是便于比较)
4.最后通过比较使用冒泡排序
*/
if ((int)(str[j].substring(0,1).charAt(0)) > (int)(str[j+1].substring(0,1).charAt(0))) {
temp = str[j];
str[j] = str[j+1];
str[j+1] = temp;
}
}
}
System.out.print("排序后数组:");
for (int i = 0; i < str.length; i++) {
System.out.print(str[i]+"\t");
}
}
}

Ⅳ 含有重复字符的字符串排列组合

排列:从给定个数的元素中取出指定个数的元素进行排序
组合:从给定个数的元素中取出指定个数的元素,不考虑排序

排列包含了组合的过程,从给定个数的元素中取出指定个数元素(组合),然后再把取出的元素进行排序。

这意味着,我们利用组合得到组合数,然后利用组合数实现全排列,就得到了排列。

一般组合指的是取出1~n个元素的组合,因为全组合只有一个

输入一个长度为n的字符串,输出该字符串中字符的所有组合

如果输入"abc",它的组合有a、b、c、ab、ac、bc、abc

①假设在长度为n的字符串中求m个字符的组合
②从头扫描字符串的第一个字符,有两种选择:
(1)把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选取m-1个字符
(2)不把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选择m个字符

注意:所有字符取出摆放的位置都是以原来的相对位置,不改变原来的前后顺序

基本思路 :求组合,表示可以取少于总字符个数的字符组合,因为全字符组合就一个,则假设输入字符个数为n个,则最终组合结果是(2^n - 1)个。
原因 :假设字符为a,b,c,则1表示取c元素,0表示不取c。所以001表示取c,010取b,100取a,011取bc.所以一共三位,每个位上有两个选择0,1.所以是(2^n - 1)个结果。依次表示为: 001,010,011,100,101,110,111 。对应输出组合结果为: a, b ,ab,c,ac,bc,abc .

注意:这个思路也非常好~ 但是前提是 字符长度不超过32个

利用hashSet实现查重:第一次放入到hashSet输出结果,如果遇到已经在hashSet中存在,则不输出结果

注意 :由于利用HashSet实现去重,而不是直接在算法上实现去重,增加了空间复杂度和时间复杂度,所以不是最优算法。关于算法优化,有待后面继续提高和实现!
如果网友有更好的方法,还是多多指教!

输入一个长度为n的字符串,输出该字符串中字符的全排列

如果输入“abc”,则全排列为abc、acb、bac、bca、cab和cba。

①递归实现,每递归一次取一个字符作为当前输入字符的首字符。例如,输入“abc”,则取第一个字符“a”,把字符“a”与第一个字符“a”交换,当前不用交换。剩下的字符“bc”,下次递归也是这样。如果选取的是字符“b”,则在字符数组中把字符“b”与字符“a”交换,后面选取字符就是在“ac”中选取。如果选取的是字符“c”,与字符“a”交换,下次选取就是在“ba”中选取
②每次选取后,下次递归则需要把交换的字符顺序,重新返回。

输入一个长度为n的字符串,字符中包含重复字符,输出字符的全排列

如果输入“abb”,则全排列为abb, bab, bba

参考文献
[1] 字符串的全排列和组合
[2] 字符串排列和组合的JAVA实现
[3] 字符串的全排列和组合算法
[4] 带有重复字符的字符数组的全排列
[5] java 全组合 与全排列
[6] 字符串组合——位运算
[7] java排列组合问题汇总【经典】

Ⅳ java中怎么对一串字符进行排序!

importjava.util.Arrays;

publicclassStringSort{

publicstaticvoidmain(String[]args){
Stringstring="togoodtoonostringandnow";
StringsortString=sortChar(string);
System.out.println(sortString);
}

privatestaticStringsortChar(Stringstr){
//1.将字符串转化成数组
char[]chs=stringToArray(str);
//2.对数组进行排序
sort(chs);
//3.将数组转成字符串
returntoString(chs);
}

privatestaticStringtoString(char[]chs){
returnnewString(chs);
}

//对字符数组进行升序排序
privatestaticvoidsort(char[]chs){
Arrays.sort(chs);
}

//将字符串转化成为数组
privatestaticchar[]stringToArray(Stringstring){
returnstring.toCharArray();
}
}

阅读全文

与java字符串全排列相关的资料

热点内容
未来最值得投资的加密货币 浏览:526
ascii码是编译的时候用吗 浏览:779
压缩机感应包可以通用吗 浏览:410
方舟服务器怎么发布到搜索列表 浏览:270
xml防反编译 浏览:239
数据传输加密系统技术方案 浏览:842
程序员没有准备去面试 浏览:4
51单片机usb鼠标 浏览:879
qq服务器的ip地址查询 浏览:112
java仿qq聊天 浏览:400
解压的ipa重新打包 浏览:142
程序员那么可爱vip版 浏览:239
程序员怎么升职 浏览:243
图形化命令按钮vb 浏览:987
vcu盘加密怎么设置 浏览:414
如何加密备份微信聊天记录 浏览:529
安卓手机如何模拟键盘 浏览:932
查看dns地址命令 浏览:768
android录屏工具 浏览:842
成都互动直播系统源码 浏览:956