最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)abc字符串排列組合

 更新時(shí)間:2018年02月05日 08:40:19   作者:zhenxianyimeng  
這篇文章主要為大家詳細(xì)介紹了JAVA實(shí)現(xiàn)abc字符串的排列組合,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

1.可重復(fù)排列:abc三個(gè)字符組成的所有長(zhǎng)度為3的字符串,aaa,aab,aac......ccc 一共27種

利用遞歸的思想,第一個(gè)字符可以從abc中選擇一個(gè),三種選擇,之后問(wèn)題轉(zhuǎn)化為abc組成長(zhǎng)度為2的字符的情況,循環(huán)遞歸后可以求出所有的可能??刂坪醚h(huán)退出條件即可。

利用遞歸可以處理,不知道字符長(zhǎng)度的情況下,即通用處理。如果知道長(zhǎng)度,只需要利用多層循環(huán),也可以得出結(jié)論。

public class Permutation { 
 public static void main(String[] args) { 
  char[] chs = {'a','b','c'}; 
  per(new char[3], chs, 3-1); 
 } 
 public static void per(char[] buf, char[] chs, int len){ 
  if(len == -1){ 
   for(int i=buf.length-1; i>=0; --i) 
    System.out.print(buf[i]); 
   System.out.println(); 
   return; 
  } 
  for(int i=0; i<chs.length; i++){ 
   buf[len] = chs[i]; 
   per(buf, chs, len-1); 
  } 
 } 
} 

可重復(fù)選擇,一共27種情況,結(jié)果如下圖所示

2.全排列:還是abc三個(gè)字符,全排列即字符不能重復(fù)。最后 3*2 =6種結(jié)果

可以利用1中的方法,只要判斷3個(gè)字符是否相等,都不相等的才是需要的全排列里的一個(gè)。這樣的時(shí)間復(fù)雜度為n^n,而全排列的種類(lèi)為n!所以需要設(shè)計(jì)一種n!的算法。

也可以利用遞歸,第一個(gè)字符串一共有n種選擇,剩下的變成一個(gè)n-1規(guī)模的遞歸問(wèn)題。而第一個(gè)字符的n種選擇,都是字符串里面的。因此可以使用第一個(gè)字符與1-n的位置上進(jìn)行交換,得到n中情況,然后遞歸處理n-1的規(guī)模,只是處理完之后需要在換回來(lái),變成原來(lái)字符的樣子。

public class Arrange { 
 public static void main(String[] args) { 
  char[] chs = {'a','b','c'}; 
  arrange(chs, 0, chs.length); 
 } 
 public static void arrange(char[] chs, int start, int len){ 
  if(start == len-1){ 
   for(int i=0; i<chs.length; ++i) 
    System.out.print(chs[i]); 
   System.out.println(); 
   return; 
  } 
  for(int i=start; i<len; i++){ 
   char temp = chs[start]; 
   chs[start] = chs[i]; 
   chs[i] = temp; 
   arrange(chs, start+1, len); 
   temp = chs[start]; 
   chs[start] = chs[i]; 
   chs[i] = temp; 
  } 
 } 
} 

運(yùn)行結(jié)果如下圖所示,一共6種組合

3.組合:abc三個(gè)字符的所有組合

求所有組合也就是abc各個(gè)位是否選取的問(wèn)題,第一位2中可能,第二位2種。。。所以一共有2^n種。用0表示不取,1表示選取,這樣可以用110這樣的形式表示ab。abc一共的表示形式從0到2^3-1。然后按位與運(yùn)算,如果結(jié)果為1就輸出當(dāng)前位,結(jié)果0不輸出。

public class Comb { 
 public static void main(String[] args) { 
  char[] chs = {'a','b','c'}; 
  comb(chs); 
 } 
 
 public static void comb(char[] chs) { 
  int len = chs.length; 
  int nbits = 1 << len; 
  for (int i = 0; i < nbits; ++i) { 
   int t; 
   for (int j = 0; j < len; j++) { 
    t = 1 << j; 
    if ((t & i) != 0) { // 與運(yùn)算,同為1時(shí)才會(huì)是1 
     System.out.print(chs[j]); 
    } 
   } 
   System.out.println(); 
  } 
 } 
} 

輸出結(jié)果如下,第一行為空,表示一個(gè)都不取

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java中應(yīng)用Stack進(jìn)行算術(shù)運(yùn)算的操作

    java中應(yīng)用Stack進(jìn)行算術(shù)運(yùn)算的操作

    這篇文章主要介紹了java中應(yīng)用Stack進(jìn)行算術(shù)運(yùn)算的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • 解決Shiro 處理ajax請(qǐng)求攔截登錄超時(shí)的問(wèn)題

    解決Shiro 處理ajax請(qǐng)求攔截登錄超時(shí)的問(wèn)題

    這篇文章主要介紹了解決Shiro 處理ajax請(qǐng)求攔截登錄超時(shí)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 三張圖徹底了解Java中字符串的不變性

    三張圖徹底了解Java中字符串的不變性

    這篇文章主要通過(guò)三張圖徹底幫助大家了解Java中字符串的不變性,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • springboot手動(dòng)動(dòng)態(tài)注入controller和service方式

    springboot手動(dòng)動(dòng)態(tài)注入controller和service方式

    這篇文章主要介紹了springboot手動(dòng)動(dòng)態(tài)注入controller和service方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java ThreadPoolExecutor 線程池的使用介紹

    Java ThreadPoolExecutor 線程池的使用介紹

    Executors 是一個(gè)Java中的工具類(lèi). 提供工廠方法來(lái)創(chuàng)建不同類(lèi)型的線程池,這篇文章主要介紹了Java ThreadPoolExecutor 線程池的使用介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • idea為java程序添加啟動(dòng)參數(shù)的問(wèn)題解析(program?arguments,vm?arguments,Environment?variable)并在程序中獲取使用

    idea為java程序添加啟動(dòng)參數(shù)的問(wèn)題解析(program?arguments,vm?arguments,Envi

    這篇文章主要介紹了idea為java程序添加啟動(dòng)參數(shù)的問(wèn)題解析(program?arguments,vm?arguments,Environment?variable)并在程序中獲取使用,本文給大家分享問(wèn)題描述及解決方法,需要的朋友可以參考下
    2023-09-09
  • Java操作Excel的示例詳解

    Java操作Excel的示例詳解

    在平時(shí)可以使用IO流對(duì)Excle進(jìn)行操作,但是現(xiàn)在使用更加方便的第三方組件來(lái)實(shí)現(xiàn)。本文就來(lái)和大家聊聊Java如何通過(guò)第三方組件實(shí)現(xiàn)操作Excel,需要的可以參考一下
    2023-01-01
  • spring.profiles.active配置使用小結(jié)

    spring.profiles.active配置使用小結(jié)

    spring.profiles.active?配置使得應(yīng)用程序能夠在不同的環(huán)境中使用不同的配置,本文主要介紹了spring.profiles.active配置使用小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Java中的interrupted()和isInterrupted()

    Java中的interrupted()和isInterrupted()

    這篇文章主要介紹了Java中的interrupted()和isInterrupted()摸下面文章圍繞interrupted()和isInterrupted()的相關(guān)資料展開(kāi)詳細(xì)內(nèi)容,需要的小伙伴樂(lè)意參考下面下面文章具體價(jià)紹,希望對(duì)大家有所幫助
    2021-11-11
  • Java通過(guò)What、Why、How了解弱引用

    Java通過(guò)What、Why、How了解弱引用

    這篇文章主要介紹了Java通過(guò)What、Why、How了解弱引用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論

泾川县| 射洪县| 宣威市| 廉江市| 宿迁市| 罗江县| 克拉玛依市| 华安县| 汨罗市| 理塘县| 志丹县| 临泽县| 米泉市| 武邑县| 睢宁县| 平阳县| 天台县| 通化市| 阿尔山市| 唐河县| 平原县| 临清市| 莒南县| 湖北省| 绍兴县| 武夷山市| 金门县| 大宁县| 盐池县| 思南县| 浦北县| 五河县| 高台县| 温州市| 西盟| 古丈县| 大埔区| 图们市| 前郭尔| 清新县| 阿拉尔市|