java统计字符串中的字符重复的次数和和出现次数 实例

如题所述

第1个回答  推荐于2016-11-01
请参考:
public class Test1 {
// 定义一个主函数
public static void main(String args[]) {
// 创建一个映射对象
java.util.Map<Character, Integer> map = new java.util.HashMap<Character, Integer>();
// 定义一个字符串
String str = "sadsafddasdscv";
// 将此字符串转换为一个新的字符数组
char[] s = str.toCharArray();
// System.out.println(s1.length);

// 往映射中放数据
for (int i = 0; i < s.length; i++) {
char s1 = s[i];

// 定义一个变量
int t = 0;
for (int j = 0; j < s.length; j++) {
if (s[i] == s[j]) {
t++;
}
}
// 将键值对放到map中
map.put(s1, t);
}

// 遍历
// 1.得到键的Set集合
java.util.Set<Character> keys = map.keySet();
// 得到迭代器
java.util.Iterator<Character> iter = keys.iterator();
// 迭代set集合
while (iter.hasNext()) {
// 取出一个
char key = iter.next();
// 根据key得到Value
int value = map.get(key);
System.out.println("字母" + key + " = " + "出现次数" + value);
}

}

}本回答被网友采纳
第2个回答  2011-04-29
基本思路:
出现次数—通过统计每一个字符的个数实现
重复次数—统计每一个字符被其他字符分为几块了,如aababaca,其中a被分为四块,重复次数为四,b的重复次数为三
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Record {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while(true){
System.out.print("请输入一个字符串:");
//获取输入
String strs = input.nextLine();
//去掉空格
strs = strs.replace(" ", "");
//将获取的字符串转为字符数组
char cstrs[] = strs.toCharArray();
ArrayList<Char> record = new ArrayList<Char>();
for(int i = 0;i<cstrs.length;i++){
Char cuChar = new Char(cstrs[i]);
if(record.contains(cuChar)){
Char cu = record.get(record.indexOf(cuChar));
cu.count++;
cu.repeat++;
}else{
record.add(cuChar);
}
}
System.out.println(cstrs);
Collections.sort(record);

for(int i=0;i<record.size();i++){
Char cuChar = record.get(i);
System.out.print("字符"+cuChar.getX());
System.out.print("重复次数:"+cuChar.getRepeat());
System.out.print("出现次数:"+cuChar.getCount());
System.out.println();
}
}
}
}
//自定义字符类,里面保存字符统计信息
class Char implements Comparable<Object>{
int repeat;
public int getRepeat() {
return repeat;
}
public void setRepeat(int repeat) {
this.repeat = repeat;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public char getX() {
return x;
}
public void setX(char x) {
this.x = x;
}
int count;
char x;
public Char(char x){
this.x=x;
repeat = 0;
count =1;
}
//重写从Object类继承下来的比较方法
public boolean equals(Object y){
if(x==((Char)y).getX()) return true;
return false;
}
@Override
public int compareTo(Object y) {
if(x>((Char)y).getX()) return 1;
return 0;
}
}
相似回答