<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    一種求字符集子集的方法

            今天一個(gè)同學(xué)問(wèn)我:Java中有沒(méi)有二進(jìn)制數(shù)據(jù)類型,我在Baidu上搜了一下,得到結(jié)論Java中的整型變量只有十進(jìn)制,八進(jìn)制,十六進(jìn)制的表示形式。我問(wèn)這個(gè)同學(xué)為什么要問(wèn)這個(gè)問(wèn)題,他告訴我,他在編一個(gè)算法時(shí)用到二進(jìn)制轉(zhuǎn)換問(wèn)題。他是在為一個(gè)字符集求子集。他的算法如下:
            對(duì)于集合{A,B,C,D},它的非空子集個(gè)數(shù)為2×2×2×2-1,用二進(jìn)制表示就是1111,我們規(guī)定從左到右第1位對(duì)應(yīng)A,第2位對(duì)應(yīng)B,第3位對(duì)應(yīng)C,第4位對(duì)應(yīng)D。如果相應(yīng)位為1,則表示存在該字符,否則不存在該字符。如1101就表示{A,B,D} 。這樣,對(duì)于一個(gè)n個(gè)字符組成的集合,根據(jù)n可以算法它的非空子集個(gè)數(shù)為m(2的n次冪-1),將m轉(zhuǎn)換為二進(jìn)制數(shù),然后采用每次減1的方法,即可得到所有子集。
           這個(gè)時(shí)候我才理解同學(xué)尋找二進(jìn)制數(shù)據(jù)類型的原因,其實(shí)我們完全可以在javaAPI中選擇一個(gè)能將整型變量轉(zhuǎn)換為二進(jìn)制字符串的方法,先將整型變量-1,再轉(zhuǎn)換為二進(jìn)制字符串,最后根據(jù)二進(jìn)制字符串就可以得到相應(yīng)集合的子集。 我在JDK幫助文檔中查到一個(gè)方法:Integer類中有一個(gè)static方法toBinaryString(int i),這個(gè)方法就是將整型i轉(zhuǎn)換為二進(jìn)制字符串,這下一切都解決了,代碼如下:

    /*
     *@author 我為J狂 建立日期 2007-4-15
     *
     
    */

    package net.blogjava.lzqdiy;

    public class IntegerToBinary
    {

        
    /**
         * 
    @param args
         
    */

        
    public static void main(String[] args)
        
    {
            
    // TODO Auto-generated method stub
            int n = 4;
            
    int m = (int) Math.pow(2, n) - 1;
            
    for (int i = m; i >= 1; i--)
            
    {
                StringBuffer str 
    = new StringBuffer(Integer.toBinaryString(i));

                
    switch (str.length())
                
    {
                
    case 1:
                    str.insert(
    0"000");

                    
    break;
                
    case 2:
                    str.insert(
    0"00");

                    
    break;
                
    case 3:
                    str.insert(
    0"0");

                    
    break;

                
    default:
                    
    break;
                }

                System.out.println(str);
            }

        }

    }

    本算法的輸出是:
    1111
    1110
    1101
    1100
    1011
    1010
    1001
    1000
    0111
    0110
    0101
    0100
    0011
    0010
    0001



    posted on 2007-04-15 12:28 我為J狂 閱讀(2040) 評(píng)論(5)  編輯  收藏 所屬分類: Java算法

    評(píng)論

    # re: 一種求字符集子集的方法[未登錄](méi) 2007-04-15 23:24 alex

    ....ju ran you zhe me sha d banfa  回復(fù)  更多評(píng)論   

    # re: 一種求字符集子集的方法 2007-04-16 12:13 我為J狂

    @alex
    朋友,恕我才疏學(xué)淺,實(shí)在不明白您評(píng)論的意思!請(qǐng)您賜教。  回復(fù)  更多評(píng)論   

    # re: 一種求字符集子集的方法 2011-05-13 19:52 Claude

    他說(shuō):居然有這么傻的辦法  回復(fù)  更多評(píng)論   

    # re: 一種求字符集子集的方法 2011-05-13 19:53 Claude

    我覺(jué)得這算法很牛呀,或許他知道更好的算法吧,不過(guò)看他這么不淡定,應(yīng)該不咋地,呵呵  回復(fù)  更多評(píng)論   

    # re: 一種求字符集子集的方法 2014-04-11 16:33 phenix

    如果這個(gè)字符串中有字母重復(fù),該怎么做呢?  回復(fù)  更多評(píng)論   

    <2014年4月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(11)

    隨筆分類(48)

    文章分類(29)

    常去逛逛

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 久久国产成人亚洲精品影院| 国产日本亚洲一区二区三区| 57pao国产成视频免费播放| 亚洲伊人久久大香线蕉AV| 国产91精品一区二区麻豆亚洲| 久久伊人免费视频| 亚洲欧美国产精品专区久久| 亚洲午夜久久久久妓女影院| 嫖丰满老熟妇AAAA片免费看| 免费的一级片网站| 91国内免费在线视频| 国产 亚洲 中文在线 字幕| 中文字幕亚洲综合久久菠萝蜜| 国产在线观看片a免费观看| 日韩a毛片免费观看| 亚洲人成片在线观看| 亚洲中文字幕丝袜制服一区| 又粗又大又黑又长的免费视频| 一级毛片在线播放免费| 国产日本亚洲一区二区三区 | 91精品免费在线观看| 色爽黄1000部免费软件下载| 亚洲同性男gay网站在线观看| 国产成人精品久久亚洲| 免费电视剧在线观看| 免费观看成人久久网免费观看| 老子影院午夜伦不卡亚洲| 亚洲综合一区二区| 亚洲精品无码AV人在线播放| 国产色婷婷精品免费视频| 18禁止看的免费污网站| 两个人日本WWW免费版| 香蕉视频亚洲一级| 亚洲中文无码卡通动漫野外 | 久久精品成人免费国产片小草| 亚洲日韩精品国产3区| 亚洲福利视频网址| 亚洲AV无码一区二区三区系列| 亚洲黄片毛片在线观看| 国产成人精品123区免费视频| 成人免费一级毛片在线播放视频|