功能:
依照每個單字出現的次數,由大到小,排列印出。
假設:
String oriString = "This is a book. That is a pencil"
輸出:
is 出現 2 次
a 出現 2 次
This 出現 1 次
That 出現 1 次
book 出現 1 次
pencil 出現 1 次
程式碼:
依照每個單字出現的次數,由大到小,排列印出。
假設:
String oriString = "This is a book. That is a pencil"
輸出:
is 出現 2 次
a 出現 2 次
This 出現 1 次
That 出現 1 次
book 出現 1 次
pencil 出現 1 次
程式碼:
import java.util.regex.*;
import java.util.*;
public class StringSort {
public static void main(String[] args){
String oriString = "This is a book. That is a pencil.";
Pattern p = Pattern.compile("\\w[^\\.\\s]*");
Matcher m = p.matcher(oriString);
Set<string> sortVerb = new TreeSet<string>();
ArrayList<string> strArray = new ArrayList<string>();
while(m.find()){
strArray.add(m.group());
sortVerb.add(m.group());
}
//計算oriString中的各個單字的次數
int[] verbCount = new int[sortVerb.size()];
int index = 0;
for(String s : sortVerb){
int count = 0;
for(String sr : strArray){
if(s.equals(sr))
count++;
}
verbCount[index++] = count;
}
//開始排序
int[] indexArray = new int[sortVerb.size()];
for(int i = 0; i < indexArray.length; i++)
indexArray[i] = i;
int temp, indexTemp;
index = 0;
for (int f = 1; f < sortVerb.size(); f++) {
if (verbCount[f] < verbCount[f-1])
continue;
temp = verbCount[f];
indexTemp = indexArray[f];
index = f-1;
while ((index >= 0)&&(verbCount[index] < temp)) {
verbCount[index+1] = verbCount[index];
indexArray[index+1] = indexArray[index];
index--;
}
verbCount[index+1]=temp;
indexArray[index+1] = indexTemp;
}
Object[] printStr = sortVerb.toArray();
for(int i = 0; i < indexArray.length; i++)
System.out.println(printStr[indexArray[i]].toString()+"出現 "+verbCount[i]+"次");
}
}
執行結果:
a出現 2次 is出現 2次 That出現 1次 This出現 1次 book出現 1次 pencil出現 1次











