功能:
依照每個單字出現的次數,由大到小,排列印出。
假設:
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...
2010年10月2日 星期六
Linking-List Implement
[轉載] from: http://www.cnblogs.com/oomusou/archive/2008/03/22/1117686.html
Abstraction
使用C語言簡單的實現linked list,並用C++的std::vector實作出相同的功能作比較。
Introduction
學習資料結構,第一個要學的就是linked list,本文示範最簡單的linked list實現,包含建立與顯示,可把它當成linked list的標準範本,畢竟步驟都差不多。
一個基本的問題:為什麼需要linked list?若要將大量資料存到記憶體,你會想到什麼?第一個想到的就是array,但C語言是個靜態語言,array必須事先宣告大小,這樣compiler才能進行最佳化,若到時候沒用這麼多記憶體,就白白浪費記憶體了。或許你會說array可以配合malloc()變成動態array,但前提是你必須告訴malloc()要建立多大的array,若連要建立多大的陣列也不確定,而是在run-time看有多少資料就建立多大,這時連malloc()的動態array也不能用了,此時就得靠linked...
C語言指標範例(指標++)
C語言中最令初學者人頭大的指標,其實很容易記錯
指標的運算元順序是由右到左(書上寫的),實際來測試一下
#include<stdio.h>
int data[2] = {100,200};
int moredata[2] = {300,400};
int main(void){
int * p1, * p2, * p3;
p1 = p2 = data;
p3 = moredata;
printf(" *p1 = %d, *p2 = %d, *p3= %d\n",
*p1, *p2, *p3);
printf(" *p1 = %d, *p2 = %d, *p3= %d\n",
*p1++, *++p2, (*p3)++);
printf(" *p1 = %d, *p2 = %d, *p3= %d\n",
*p1, *p2, *p3);
//括號測試
printf("It is equal result...\n");
p1 = p2 = data;
...
C/C++[微小位元][數字&數字]
最近,因為面試的關係,想把一些東西弄清楚,所以做了一些測試:
以下是微小位元的測試,實際是就是二進位運算啦,考是算錯(怪怪)
#include<stdio.h>
int main(void){
int a = 44;
int b = 55;
int c = 33;
int d = -20;
printf("uni-micro operator: \n");
printf("a & b = %d\n", a & b);
printf("b & c = %d\n", b & c);
printf("c & d = %d\n", c & d);
printf("b & b = %d\n", b & b);
printf("a | b = %d\n", a | b);
printf("double-micro operator: \n");
printf("a &&...