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

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

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

    一種求字符集子集的方法

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

    /*
     *@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狂 閱讀(2049) 評論(5)  編輯  收藏 所屬分類: Java算法

    評論

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

    ....ju ran you zhe me sha d banfa  回復  更多評論   

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

    @alex
    朋友,恕我才疏學淺,實在不明白您評論的意思!請您賜教。  回復  更多評論   

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

    他說:居然有這么傻的辦法  回復  更多評論   

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

    我覺得這算法很牛呀,或許他知道更好的算法吧,不過看他這么不淡定,應該不咋地,呵呵  回復  更多評論   

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

    如果這個字符串中有字母重復,該怎么做呢?  回復  更多評論   

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

    導航

    統計

    常用鏈接

    留言簿(11)

    隨筆分類(48)

    文章分類(29)

    常去逛逛

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 中文字幕人成人乱码亚洲电影| 精品无码AV无码免费专区| 免费无码黄十八禁网站在线观看| 久久青青草原亚洲AV无码麻豆| 岛国av无码免费无禁网站| 亚洲天堂久久精品| 6080午夜一级毛片免费看| 久久精品国产亚洲AV麻豆网站| 亚洲欧美成人一区二区三区| 性做久久久久久免费观看| 91亚洲精品自在在线观看| 最近2022中文字幕免费视频| 久久综合亚洲色一区二区三区| 日本免费大黄在线观看| 在线免费不卡视频| 亚洲一区二区三区91 | 亚洲精品国产福利在线观看| 99久久国产免费中文无字幕| 亚洲婷婷天堂在线综合| 精品熟女少妇AV免费观看| 处破女第一次亚洲18分钟| 亚洲成a人片在线观看久| 香蕉视频在线免费看| 亚洲av色影在线| 国产精品成人免费一区二区| 国产成人综合久久精品亚洲| 亚洲色成人中文字幕网站| 免费A级毛片无码A∨中文字幕下载| 亚洲欧洲校园自拍都市| 成年人免费网站在线观看| sss日本免费完整版在线观看| 亚洲av网址在线观看| 午夜宅男在线永久免费观看网| 国产综合激情在线亚洲第一页| 亚洲中文字幕日产乱码高清app| 免费91麻豆精品国产自产在线观看 | 无码成A毛片免费| 亚洲人成人无码.www石榴| 亚洲一区日韩高清中文字幕亚洲| 久久精品无码精品免费专区| 亚洲午夜精品一区二区麻豆|