~“持而盈之;揣而銳之”
題目:
試設計一個算法,求串S和串T的最大公約子串;要求:
1) 不使用高級函數
2) 可以求出首個最大公約串(最左)
3) 最好也可以求出所有最大公約串
貼上一個實現(返回最左公約串):
string maxSub(char * s, char * t) { if(NULL==s || NULL==t)return ""; int max=0; string result=""; char * ss,*tt; //遊標 //平行指針法 for(ss=s;*ss!='/0';ss+=1) { tt=t; //每次都從頭起比對 while(*tt!=*ss && *tt!='/0')tt++; if(*tt!='/0')//現在,tt當前所指的和ss當前所指的相同;接下來看這種相同能保持多久。 { char * tempss=ss; int count=0; string tempResult=""; while(*tempss!='/0'&& *tt!='/0' && *tempss==*tt) { tempResult+=*tempss; count++; tempss++; tt++; } if(max<count) { max=count; result=tempResult; } } else continue;//ss所指字符沒有在tt的任何位置出現,繼續下一個循環 } return result; }
HashSet類實現Set接口,該類使用散列表對數據進行存儲。 HashSet在進行數據存儲時不保證數據的有序性,並且存儲是變化的,同時運行保存null。 import java.util.HashSet; import java.uti
ArrayList實現了List接口,它能夠動態地增加或減少數組元素。當我們在進行元素的檢索時,可以使用此類。 最後一點,ArrayList類是不同步的,當有多個線程同時訪問該類的實例時,我們要進行手動的同步。 注:Link list
Vector類似於ArrayList,但是Vector是同步的。 import java.util.Vector; public class VectorTest { public static void main(String[]