现在的位置: 首页 > 综合 > 正文

求字符串中字母出现的次数并排序输出

2013年01月18日 ⁄ 综合 ⁄ 共 2558字 ⁄ 字号 评论关闭

import javax.swing.plaf.basic.BasicInternalFrameTitlePane.SystemMenuBar;

import sun.net.www.content.audio.wav;

public class Strplus {
public static void main(String[] args) {
String str = "abdklie;ljkdfksjfdsfjdkslljslfjksjgkjgl";
String str1 = str;
String str2 = "";
char c ;
int a[] = new int[26];
int i =0 ;
int num = 0;
int number;
while (str1.length() > 0) {
c = str1.charAt(0); //返回一个字符
str1 = str1.replaceAll(String.valueOf(str1.charAt(0)), "*"); //把字符转换为字符串?replaceAll(String a,String b)
str2 = str1.replaceAll("//w", ""); // //w表示/w [a~zA~Z0~9]
System.out.println(c + "出现了 " + str2.length() + "次");
if(i<=26){
a[i]= str2.length();
System.out.println(a[i]);
i++;
}

str1 = str1.replaceAll("//*", ""); // //*表示是
}
num = i;
System.out.println("////");
System.out.println("////////");
System.out.println("//*");
for(int j=0;j <num; j++){
for(int k=0;k<num-j-1;k++){
if(a[k]>a[k+1]){
number = a[k];
a[k] = a[k+1];
a[k+1] = number;
//System.out.print('b');
}
}
//System.out.print(a[j]);
//System.out.print('a');
}
for(int j=0; j<num;j++){
System.out.print(a[j]+"");
//System.out.print(j);
}
}
}

 

 

 

另一种方法:  (没有很理解,但是可以实现)

 

import java.util.*;

 

 

public class Strmap {

public static void main(String args[]) {

String str = "12345678hfdjkslahfkj932189oiefsjkar94werfdsf";

Map<Character, KeyValue> map = new HashMap<Character, KeyValue>();

char c;

KeyValue kv = null;

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

c = str.charAt(i); //取出字符

kv = map.get(c);   //从map里取出字符c

if (kv == null) {

kv = new KeyValue();

kv.ch = c;

kv.count = 1;

map.put(c, kv);

} else {

kv.count++;

}

}

List<KeyValue> list = new ArrayList<KeyValue>(map.values());

Collections.sort(list);

for (KeyValue o : list) {

System.out.println(o.ch + "=" + o.count);

}

}

}

 

 

 

 

 class KeyValue implements Comparable{

char ch;

int count;

 

public int compareTo(Object obj) {

// TODO Auto-generated method stub

if (obj instanceof KeyValue) {

KeyValue kv = (KeyValue) obj;

return kv.count - this.count;

}

return -1;

}

 

}

 

再有一种方法 ,通过ArrayList,HashMap实现

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

public class Test{
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		System.out.println("请输入一个字符串:");
		String cnt = s.nextLine();
		ArrayList<Character> array = new ArrayList<Character>();
		HashMap<Character, Integer> map = new HashMap<Character, Integer>();
		//--------这里是计算字符出现次数并记录↓----------
		for (int i = 0; i < cnt.length(); i++) {
			char tmp = cnt.charAt(i);
			if(map.containsKey(tmp)){
				int num = map.get(tmp);
				num++;
				map.put(tmp, num);
			}else{
				map.put(tmp, 1);
				array.add(tmp);
			}
		}
		//-----下面就是个冒泡--------
		for (int i = 0; i < array.size(); i++) {
			for (int j = 0; j < array.size()-1-i; j++) {
				if(map.get(array.get(j))>map.get(array.get(j+1))){
					char tmp = array.get(j);
					array.set(j, array.get(j+1));
					array.set(j+1, tmp);
				}
			}
		}
		System.out.println(map);//这个就是打印字符出现的次数
		System.out.println(array);//这个打印排序后的数组,从小到大
	}
}

抱歉!评论已关闭.