2011-05-14 60 views
1

我有一個問題。在Java中查找子串的索引

假設我們有兩個字符串str1,str2。字符串可以是任何東西。現在,我們需要創建一個搜索str1並返回索引號的方法。 str1中第一次出現str2,如果找不到則返回-1。但是我們不能使用string.indexOf方法。

我被撞到如何去做。

任何幫助,將理解

由於

+1

爲什麼你不能用'string.indexOf'? – 2011-05-14 05:42:12

+0

你可以使用正則表達式嗎?或者這是一個編程作業,你必須從最初的原則來做呢? – sjr 2011-05-14 05:43:37

+0

@gshauger:你是指aioobe?他只是*編輯*的問題,它最初來自user753334。 – 2011-05-14 06:27:22

回答

0

只需使用方法myString.GetChartAt(索引);做你想做的事。 (例如,在循環系統中使用它來比較字符串str1和str2)。 另一種方式可以考慮正則表達式來實現你想要的,這聽起來像作業,其他的約束是什麼?

1

如何:

  1. 在STR1每個位置小於或等於str1.length() - str2.length()
    1. 搶STR1的字符串長度爲str2.length ()從該位置
    2. 比較這串與STR2,如果匹配,返回的位置
  2. 返回-1

對不起,但在這個基本問題上發佈代碼是不會幫助你的。所以我沒有。

+0

嘿,謝謝Nam。我會考慮你的解決方案。我只是想要這個邏輯。不管怎麼說,多謝拉 – user753334 2011-05-16 04:12:47

0

如果你想真正打動你的教授做以下...

查找將執行Powerset的建設或者自己寫的代碼,將主要從搜索字符串生成DFA庫。然後逐個遍歷字符串和DFA中的一個字符,如果最終處於接受狀態,則會找到它。

當你迭代你的字符串跟蹤當前字符的索引。如果您的DFA接受,那麼只需從當前索引中減去搜索字符串長度,然後您就可以在字符串中開始索引。

Powerset Construction

Finite State Automation Based Search