【华为OJ】【053-字符统计】
来源:互联网 发布:php 去除图片水印 编辑:程序博客网 时间:2024/05/16 08:27
【华为OJ】【算法总篇章】
【华为OJ】【053-字符统计】
【工程下载】
题目描述
如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。实现以下接口: 输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用) 按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出 清空目前的统计结果,重新统计调用者会保证:输入的字符串以‘\0’结尾。
输入描述
输入一串字符。
输出描述
对字符中的各个英文字符(大小写分开统计),数字,空格进行统计,并按照统计个数由多到少输出,如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。
输入例子
aadddccddc
输出例子
dca
算法实现
import java.util.*;/** * Author: 王俊超 * Date: 2015-12-27 14:41 * Declaration: All Rights Reserved !!! */public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);// Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt")); while (scanner.hasNext()) { String input = scanner.nextLine(); System.out.println(count(input)); } scanner.close(); } private static String count(String s) { Set<Node> set = new TreeSet<>(new Comparator<Node>() { @Override public int compare(Node t, Node s) { if (t.v != s.v) { return s.v - t.v; } return t.c - s.c; } }); Map<Character, Node> map = new HashMap<>(s.length()); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9' || c ==' ') { if (map.containsKey(c)) { map.get(c).v++; } else { map.put(c, new Node(c, 1)); } } } for (Node n : map.values()) { set.add(n); } StringBuilder builder = new StringBuilder(set.size()); for (Node n : set) { builder.append(n.c); } return builder.toString(); } private static class Node { private char c; private int v; public Node(char c, int v) { this.c = c; this.v = v; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Node node = (Node) o; return c == node.c; } @Override public int hashCode() { return (int) c; } }}
2 0
- 【华为OJ】【053-字符统计】
- 华为OJ-字符统计
- 华为oj 字符统计
- 【华为 OJ】字符统计
- 【华为OJ】字符统计
- 华为oj 字符统计
- 【华为OJ】统计字符个数
- 华为 OJ 字符个数统计
- 华为OJ(字符统计)
- 华为oj 等差数列&&字符统计
- 华为OJ 初级:字符统计
- 【华为 OJ 】字符个数统计
- 华为oj 统计字符串不同字符
- 华为oj之字符个数统计
- 华为OJ题目(三):字符统计
- 【华为OJ】【010-字符个数统计】
- 华为OJ——字符个数统计
- 华为OJ 初级:字符个数统计
- 成为C++高手之while循环
- Centos7搭建Zabbix2.4
- 【华为OJ】【051-查找组成一个偶数最接近的两个素数】
- 标签重置 CSS Reset--学习笔记
- 【华为OJ】【052-输入整型数组和排序标识,对其元素按照升序或降序进行排序】
- 【华为OJ】【053-字符统计】
- seo面试题目百度搜索指令
- 【华为OJ】【054-Redraiment的走法】
- .NET系统学习----Globalization & Resources
- 【华为OJ】【055-字符串匹配】
- 【程序员养生】:经历以及教训及生活日历
- Regular Expressions (1) ---- What is Regular Expressions?
- Regular Expressions (2) ---- Common Used Samples
- Regular Expressions (3) ---- Using Regex in .NET