題目描述:
給定一個由大小寫字母構成的字符串,輸出其每個字符出現的次數。(不區分大小寫)
這道題思路很簡單,直接用一個數組來記錄。(其中數組下標表示字符,數組值記錄其出現的次數即可)
下面給出Java版本的代碼:
public static void main(String args[]) {
String str = "abhjbfahjafnojkla";
getCount(str);
}
private static void getCount(String str) {
str = str.toLowerCase();
int[] arr = new int[26];
for (int i = 0; i < str.length(); i++) {
arr[str.charAt(i) - 'a']++;
}
for (int i = 0; i < arr.length; i++) {
if (arr[i] != 0) {
System.out.println((char) (i + 'a') + "有" + arr[i] + "個");
}
}
}
結果如下:
Java語言有字符這個類型,所以解決此題輕而易舉,但是由於js中沒有字符這種數據類型只有字符串。從而用js代碼來解決此題就需要略微調整思路。
這裏就需要藉助js中獨特的兩點:
- js中可以使用字符串作爲下標
- js中有很強的數據類型間的轉換
所以相比於Java實現思路,這裏我們只需要把每種字符看成單元素的字符串作爲數組的下標來巧妙的避免了無字符的缺陷。
js版本代碼如下:
function getCount(str) {
//JS中可以使用字符串作爲下標
str = str.toLocaleLowerCase();
var arr = new Array();
for (var i = 0; i < str.length; i++) {
var key = str[i];
//number轉boolean
arr[key] ? arr[key]++ : arr[key] = 1;
}
for (var key in arr) {
console.log(key + "有" + arr[key] + "個");
}
}
var str = "abhjbfahjafnojkla";
getCount(str);
結果如下: