導航:首頁 > 編程語言 > 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字元串全排列相關的資料

熱點內容
文件加密了怎麼找到了 瀏覽:193
jellyfin插件怎麼選擇主伺服器 瀏覽:836
asp用戶注冊源碼 瀏覽:48
什麼是照片壓縮文件 瀏覽:392
java調用js代碼 瀏覽:979
崑山市民app怎麼修改身份信息 瀏覽:779
php登陸次數 瀏覽:744
python字元轉成數字 瀏覽:822
海川用的是什麼伺服器 瀏覽:376
口才是練出來的pdf 瀏覽:458
雲伺服器哪個公司性價比高 瀏覽:517
源碼論壇打包 瀏覽:558
php怎麼做成word 瀏覽:692
python批量生成密鑰 瀏覽:492
程序員要不要考社區人員 瀏覽:150
app的錢怎麼充q幣 瀏覽:814
android銀行卡識別 瀏覽:756
怎麼在app投放廣告 瀏覽:11
手機文件管理怎麼看app名稱 瀏覽:192
程序員學數學哪本書最全 瀏覽:789