功能:
依照每個單字出現的次數,由大到小,排列印出。
假設:
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次