字元個數統計

字元個數統計

 

      念天地之悠悠,獨愴然而涕下。

 

題目描述

編寫一個函數,計算字元串中含有的不同字元的個數。字元在ACSII碼範圍內(0~127),換行表示結束符,不算在字元里。不在範圍內的不作統計。多個相同的字元只計算一次。
例如,對於字元串abaca而言,有a、b、c三種不同的字元,因此輸出3。

輸入描述

輸入一行沒有空格的字元串。

輸出描述

輸出範圍在(0~127)字元的個數。

示例

輸入

abc

輸出

3

Java程式碼示例

 1 import java.util.*;
 2 import java.io.*;
 3 
 4 // 可以看看ASCII對照表://baike.baidu.com/item/ASCII/309296?fromtitle=ascii%E7%A0%81&fromid=99077&fr=aladdin
 5 public class Main{
 6     public static void main(String [] args) throws IOException {
 7         //Scanner bufferReader = new Scanner(System.in);
 8         //String line = bufferReader.nextLine();
 9         // 使用BufferedReader & InputStreamReader 會比直接使用Scanner運行速度快些
10         BufferedReader bufferReader = new BufferedReader(new InputStreamReader(System.in));
11         String line = bufferReader.readLine();      
12         int [] lineArray = new int [127];
13         int count = 0; // 統計重複的字元個數
14         // 遍歷輸入字元串的每一個字元,若首次出現將char對應的索引數組賦值,同時count + 1
15         for(int i = 0; i < line.length(); i++){
16             char temp = line.charAt(i);
17             if(lineArray[temp] == 0){  // 數組未賦值默認值為 0
18                 count++;
19                 lineArray[temp] = 1;  // 該cahr 數組索引賦值
20             }
21             // 假如輸入tjt,第一次 lineArray[t] 賦值後,下次char為t的再過來就直接跳過
22         }
23         System.out.println(count);
24     }
25 }

驗證通過

 

 

 

 

 

 

念天地之悠悠

獨愴然而涕下