题目描述:
给定一个由大小写字母构成的字符串,输出其每个字符出现的次数。(不区分大小写)
这道题思路很简单,直接用一个数组来记录。(其中数组下标表示字符,数组值记录其出现的次数即可)
下面给出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);
结果如下: