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

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

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

    posts - 165, comments - 198, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    一道題面試題!

    Posted on 2008-07-30 11:29 G_G 閱讀(1882) 評論(2)  編輯  收藏
    代碼編輯耗時 40 分鐘 ;自己感覺很慢??!

    文本文件,我想寫個Java程序,讀一遍這個
    文件,然后打印出來文件中英文字母(a 到 z)出現(xiàn)的次數(shù)。不區(qū)分大小寫。
    代碼:

    import?java.io.FileInputStream;
    import?java.io.InputStreamReader;
    import?java.util.Collections;
    import?java.util.LinkedHashMap;
    import?java.util.Map;

    public?class?LinjiawangMain?{
    ????
    ????
    public?static?void?main(String[]?args)?throws?Exception?{
    ????????Map
    <Character,?Integer>?map?=?getCountByFileLetters("chars.txt")?;
    ????????
    for(char?ctmp?:?map.keySet()){
    ????????????System.out.println(?ctmp
    +"="+map.get(ctmp)?);
    ????????}
    ????}
    ????
    ????
    ????
    //統(tǒng)計?文件字符工具方法
    ????public?static?Map<Character,?Integer>?getCountByFileLetters(String?filePath)?throws?Exception{
    ????????
    //邏輯?參數(shù)定義
    ????????int?int_A?=?'A';
    ????????
    int?int_Z?=?'Z';
    ????????
    ????????
    int?int_a?=?'a';
    ????????
    int?int_z?=?'z';
    ????????
    ????????
    //數(shù)據(jù)收集?map?(保持存儲順序?使用?LinkedHashMap?)
    ????????Map<Character,?Integer>?map?=?new?LinkedHashMap<Character,?Integer>();
    ????????
    ????????
    //以?ISO-8859-1?字符?讀取?.classpath?下的?文件?
    ????????InputStreamReader?read?=?new?InputStreamReader(new?FileInputStream(
    ????????????????LinjiawangMain.
    class.getClassLoader().getResource(filePath)
    ????????????????????????.getPath()),?
    "ISO-8859-1");
    ????????
    //臨時數(shù)據(jù)收集
    ????????int[]?iis?=?new?int[int_z-int_a];
    ????????
    while(read.ready()?){
    ????????????
    int?itmp?=?read.read();
    ????????????
    //?當?'a'<=itmp<='z'?(短路)
    ????????????
    //?當?'A'<=itmp<='Z'?(非短路)?后修改itmp到?'a'?到?'z'范圍?
    ????????????if(?
    ????????????????(?itmp?
    >=int_a?&&?itmp<=int_z?)?||
    ????????????????(?itmp
    >=int_A?&&?itmp<=int_Z??)?|?(itmp=(itmp+(int_a-int_A)))>=int_a?
    ????????????){
    ????????????????iis[itmp
    -int_a]++?;
    ????????????}
    ????????}
    ????????
    ????????
    //由?臨時數(shù)據(jù)收集?轉(zhuǎn)?到正式收集?
    ????????for(int?i=0;i<int_z-int_a;i++){
    ????????????map.put(?(
    char)(i+int_a),iis[i]?);
    ????????}
    ????????
    //非修改?map?
    ????????return?Collections.unmodifiableMap(map)?;
    ????}
    ????
    }



    文件:
    aAbbbbCCCCc2345ABdb
    abc
    d




    評論

    # re: 一道題面試題!  回復(fù)  更多評論   

    2008-07-31 09:55 by Always BaNg.
    暈,統(tǒng)計字數(shù)使用了這么高級的數(shù)據(jù)結(jié)構(gòu),Map, Collection都用上了。

    一般關(guān)于算法的題都是用基本數(shù)據(jù)類型和數(shù)組來完成的,否則就不通用了。

    不是每種語言都支持Map,Collection的。

    這種答案我肯定否定掉。

    # re: 一道題面試題!  回復(fù)  更多評論   

    2008-07-31 10:22 by G_G
    謝謝提醒
    我收集到 int[] iis 數(shù)據(jù)后直接返回 !
    不過 我使用的 Map,Collection 只是為 返回后 的使用方便哦!
    最核心的 循環(huán)體內(nèi) 是使用基本數(shù)據(jù)類型 ,還是 單元操作
    if(
    ( itmp >=int_a && itmp<=int_z ) ||
    ( itmp>=int_A && itmp<=int_Z ) | (itmp=(itmp+(int_a-int_A)))>=int_a
    ){
    iis[itmp-int_a]++ ;
    }

    當了也是出于私心 秀下 自己對 jdk 的了解了 ^_^

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 最新国产乱人伦偷精品免费网站 | 一本岛v免费不卡一二三区| 无人在线观看免费高清视频| 亚洲精品美女视频| 免费不卡在线观看AV| 1区1区3区4区产品亚洲| 亚洲三级在线免费观看| 亚洲国产成人久久99精品| 99久久久国产精品免费无卡顿| 精品久久久久久亚洲精品| 成人一a毛片免费视频| 自拍偷自拍亚洲精品偷一| 亚洲成av人片天堂网老年人| www成人免费视频| 国产亚洲美女精品久久久久狼| 国产成人AV免费观看| 亚洲视频一区网站| 免费毛片在线看片免费丝瓜视频 | 国产av无码专区亚洲av果冻传媒| 国产精品午夜免费观看网站| 亚洲av一综合av一区| 性xxxxx免费视频播放| 亚洲JIZZJIZZ妇女| av在线亚洲欧洲日产一区二区| 成人影片一区免费观看| 亚洲最大在线视频| 四虎永久成人免费影院域名| 中文字幕在线免费视频| 亚洲第一香蕉视频| 亚洲AV无码成人精品区大在线| 久久99精品免费视频| 亚洲精品中文字幕| 久久乐国产综合亚洲精品| 免费无码又爽又刺激高潮| 免费视频成人国产精品网站| 亚洲va久久久噜噜噜久久天堂| 久久久久国色AV免费观看性色| 免费看一级毛片在线观看精品视频| 亚洲AV成人无码久久精品老人| 国产精品视_精品国产免费| 视频免费在线观看|