~“持而盈之;揣而锐之”
题目:
试设计一个算法,求串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[]