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

          一道題面試題!

          Posted on 2008-07-30 11:29 G_G 閱讀(1885) 評論(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();
          ????????????
          //?當(dāng)?'a'<=itmp<='z'?(短路)
          ????????????
          //?當(dāng)?'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)計字?jǐn)?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]++ ;
          }

          當(dāng)了也是出于私心 秀下 自己對 jdk 的了解了 ^_^

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 招远市| 绍兴市| 霍邱县| 西峡县| 扬州市| 偃师市| 兴文县| 望谟县| 玉溪市| 彭山县| 涟水县| 芦溪县| 玉龙| 城口县| 罗山县| 瓦房店市| 恩施市| 龙海市| 加查县| 大安市| 洪江市| 麦盖提县| 莆田市| 榆树市| 武平县| 阆中市| 高雄县| 辽宁省| 池州市| 河源市| 大关县| 鹤岗市| 沁阳市| 师宗县| 云阳县| 河源市| 金门县| 大田县| 常州市| 淮北市| 东辽县|