2012-01-31 91 views
0

我今天寫了這段代碼來檢查字符串中每個字符的頻率。它運行得非常緩慢。我怎樣才能改進這個代碼?改善字符串中字符的代碼檢查頻率

import java.util.*; 
public class checkFreq { 

    public static void main(String[] args) { 

     Scanner s = new Scanner(System.in); 
     // Input 
     System.out.print("Enter a string: "); 
     String input = s.nextLine(); 
     long t1 = System.currentTimeMillis(); 
     // Convert input to UpperCase 
     String tmp = input.toUpperCase(); 

     // String to compare 
     String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
     int aleng = alphabet.length(); 

     for (int l = 0; l < aleng; l++) { 
      //Run 26 times 
      int count = 0; 
      int i = 0; 
      String tmp2; 
      while (i < tmp.length() - 1) { 
       tmp2 = tmp.substring(i, i + 1); 
       int exist = tmp2.indexOf(alphabet.charAt(l)); 
       if (exist != -1) { 
        count++; 
       } 
       i++; 
      }//End while 

      if (count != 0) { 
       System.out.print(alphabet.charAt(l) + "(" + count + ") "); 
      }//End if 
     }// End for 
     System.out.println(); 

     long t2 = System.currentTimeMillis(); 
     // Count time of process 
     System.out.println("Time : " + (t2 - t1) + "ms"); 
    } 
} 
+0

重複的[快捷的方式找到一個字符的頻率在Java中的字符串](http://stackoverflow.com/questions/6215486 /有效的方式查找頻率的字符在一個字符串在java中) – Paul 2012-01-31 03:30:43

+2

@HotLicks ...「呃」?這並不酷。這個人是新來的,有一個問題......不需要取笑那個人。 – Paul 2012-01-31 03:49:05

+0

我開始在一週內學習Java。所以我希望有人幫助找出更有效的方法。 – HNQ 2012-01-31 08:51:20

回答

1

使用HashMap映射Character的次數(Integer