用java實現的strstr函數的一些問題
阿新 • • 發佈:2017-07-25
符號 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(inti=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函數的一些問題