您的位置:首页 > 其它

字符统计

2015-07-03 10:44 218 查看
package OJ;

import java.util.*;

public class Demo1 {

 /**

  * @字符统计 

  * 如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。

  * 实现以下接口:

  *    输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用)

  *    按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出

  *    清空目前的统计结果,重新统计

  *    调用者会保证:

  *    输入的字符串以‘\0’结尾。

  */

 public static void main(String[] args) {

  Scanner sc = new Scanner(System.in);

  String str = sc.nextLine();

  

  char[] arr = str.toCharArray();

  int[] num = new int[str.length()];

  

  for(int i=0;i<str.length();i++){

   num[str.indexOf(str.charAt(i))]++;

  }

  

  TreeSet<CharCount> ts = new TreeSet<CharCount>();

  for(int i=0;i<str.length();i++){

   if(num[i]!=0)

    ts.add(new CharCount(str.charAt(i),num[i]));

  }

  

  Iterator<CharCount> it = ts.iterator();

  while(it.hasNext()){

   CharCount cc = it.next();

   char ch = cc.getCh();

   int val = cc.getNum();

   sop(ch);

  }

  

 }

 

 public static void sop(Object obj){

  System.out.print(obj);

 }

}

class CharCount implements Comparable<CharCount>{

 private char ch;

 private int num;

 

 

 public CharCount(char ch, int num) {

  super();

  this.ch = ch;

  this.num = num;

 }

 public int compareTo(CharCount o) {

  if(this.num>o.num)

   return -1;

  else

  if(this.num<o.num)

   return 1;

  

  return this.ch-o.ch;

 }

 

 public char getCh() {

  return ch;

 }

 public void setCh(char ch) {

  this.ch = ch;

 }

 public int getNum() {

  return num;

 }

 public void setNum(int num) {

  this.num = num;

 }

 

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: