1. 程式人生 > >用java實現的strstr函數的一些問題

用java實現的strstr函數的一些問題

符號 clas bsp 問題: pub spa 操作 記錄 位置

用java實現過程如下:

 1 public static int strstr(char[] cArray1,char[] cArray2){
 2     if(cArray1!=null && cArray2!=null 
 3             && !cArray1.equals("") && !cArray2.equals("")
 4             && cArray1.length>=cArray2.length){
 5         int m=0;
 6         for(int
i=0;i<=cArray1.length-cArray2.length;i++){ 7 if(cArray1[i]==cArray2[m]){ 8 m++; 9 if(m==cArray2.length){ 10 return i-cArray2.length+1; 11 } 12 continue; 13 }else{ 14 m=0; 15
} 16 } 17 } 18 return -1; 19 }

這是同學面試c出的一道考題,要求用c實現的。

java實現的問題:

不允許使用length屬性。作為庫函數的開發,這裏不允許使用這些屬性。

====

c語言可以依靠指針來操作。

c中字符串以‘\0‘結尾,移動指針查看所指內容。

若cArray2先為空,或cArray2和cArray1同時為空,則判斷包含;若cArray1先為空,則不包含。

=====

想用java實現類似c指針的功能,想到:

1、以捕獲越界異常的方式來作為數組結束判斷。。。

2、添加一個符號比如‘#’到末尾,作為結束標誌。但如果數組中本身含有怎麽辦。。貌似無解。。

=========================================

除過以上這些,java實現的思想如下:

1、遍歷cArray1;

2、設置變量m記錄cArray2的比較位置。

初始值為0,然後順位比較,一旦有不相等的情況,m重置為0。cArray1接著向後遍歷,但cArray2從頭開始。

3、判斷成功的條件。m==cArray2.length。

-------

另,char類型的值比較是否相等,直接用“==”,因為是基礎變量。。。。。。。。

用java實現的strstr函數的一些問題