0
之間傳輸的Java int []數組在此上停頓了一段時間。我有folllowing兩種方法:(只顯示相關代碼)未在方法
public static int[] buildBoyerMooreCharTable(String pattern) {
int[] map = new int[Character.MAX_VALUE + 1];
char[] ca = pattern.toCharArray();
for (int i = 0; i < map.length; i++)
{
for (int k = 0; k < ca.length; k++)
{
if (Character.getNumericValue(ca[k]) == i)
{
//System.out.println("YO");
map[i] = findMax(1, pattern.length() - pattern.lastIndexOf(ca[k]) - 1);
}
}
}
for (int j =0 ; j < ca.length; j++)
{ System.out.println(map[Character.getNumericValue(ca[j])]);}
System.out.println("Gut check " + map[Character.getNumericValue('a')]);
return map;
}
方法2
public static List<Integer> boyerMoore(String pattern, String text) {
int i = pattern.length() - 1;
int j = pattern.length() - 1;
int k = 0;
boolean yo = false;
ArrayList<Integer> ans = new ArrayList<Integer>();
int[] last_table = buildBoyerMooreCharTable(pattern);
System.out.println("Did it transfer " + last_table[Character.getNumericValue('b')]);
...
的問題是,我相信,在我行:
int[] last_table = buildBoyerMooreCharTable(pattern);
的表沒有正確傳輸!在我的顯示窗口中,我收到以下內容:
Gut check 3
Gut check 0
Did it transfer 0
腸道檢查3是正確的!其餘的......不。
這是它被稱爲
StringSearch ss = new StringSearch();
String yay = "abcdabcdabce";
StringSearch.buildBoyerMooreCharTable(yay);
List<Integer> a_i = new ArrayList<Integer>();
a_i = StringSearch.boyerMoore("d", yay);
所以......當方法boyerMoore實際上是所謂的...我們得到一個失敗的價值。
避開所有我發佈的代碼 - 我覺得有可能是不理解如何設置陣列彼此相等回事的事...
你在做什麼看起來不錯。然而,你將'map [Character.getNumericValue('a')]'映射到'map [Character.getNumericValue('b')]' - 那會是問題嗎? – iluxa
你期望'Character#getNumericValue()'返回什麼? –
顯示您的println語句的結果。 –