给出一个仅包含字母的字符串,不包含空格,统计字符串中各个字母(区分大小写)出现的次数,
并按照字母出现次数从大到小的顺序。输出各个字母及其出现次数。
如果次数相同,按照自然顺序进行排序,且小写字母在大写字母之前。
输入描述:
输入一行,为一个仅包含字母的字符串。
输出描述:
按照字母出现次数从大到小的顺序输出各个字母和字母次数,用英文分号分隔,注意末尾的分号;
字母和次数间用英文冒号分隔。
示例1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
xyxyXX
输出
x:2;y:2;X:2;
function resolve(str = "abababb") {
let arr = str.split("");
let obj = {};
for (let i = 0; i < arr.length; i++) {
if (obj.hasOwnProperty(arr[i])) {
obj[arr[i]]++;
} else {
obj[arr[i]] = 1;
}
}
let res = [];
for (let item in obj) {
res.push([item, obj[item]]);
}
res.sort((a, b) => {
if (b[1] != a[1]) {
return b[1] - a[1];
} else if ((isLower(a[0]) && isLower(b[0])) || (isUpper(b[0]) && isUpper(a[0]))) {
return a[0] > b[0] ? 1 : -1
} else {
if (isUpper(a[0])) return 1
else return - 1
}
});
console.log(res);
}
function isLower(chart) {
return chart >= "a" && chart <= "z";
}
function isUpper(chart) {
return chart >= "A" && chart <= "Z";
}
resolve();