###前提・実現したいこと
文字列探索について、BM法でコーディング。
〜〜文字目にマッチすると表示させたいです。
###発生している問題・エラーメッセージ
コンパイルはできますが、
アルゴリズムがうまく組めていないようで、
「0文字目にマッチする」という結果になります。
ご教授願いたいです。
###該当のソースコード
Java
1 2//txt:=探索される文字列, pat:=探索したい文字列 3//mainメソッド等は略 4 5 int pt = pat.length()-2; 6 int pp = pat.length()-1; 7 int[] skip = new int[pat.length() + 1]; // スキップテーブル 8 9 // スキップテーブルの作成 10 11 skip[pt] = 0; 12 while (pt >= 0){ 13 if (pat.charAt(pt) == pat.charAt(pp)) 14 skip[pt--] = pp--; 15 else if (pp == pat.length()-1) 16 skip[pt--] = pp; 17 else 18 pp = skip[pp]; 19 } 20 21// 探索 22 int k = -1; 23 pt = pp = pat.length()-1;//patの最後から探していく 24 while(pt < txt.length()){ 25 if(pt - pp == k){ 26 break; 27 } 28 else{ 29 k = pt - pp; 30 } 31 32 while(txt.charAt(pt) == pat.charAt(pp)){ 33 if(pp == 0){ 34 return pt; 35 } 36 pp--; 37 pt--; 38 39 if(k == pt - pp){ 40 break; }else{ 41 k = pt - pp; 42 } 43 } 44 pp -= skip[pp]; 45 } 46 return -1; 47 } 48 49
###補足情報(言語/FW/ツール等のバージョンなど)
Java
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。