在Java中查找子字符串的索引

时间:2011-05-14 05:40:17

标签: java

我有一个问题。

假设我们有两个字符串str1,str2。字符串可以是任何东西。现在,我们需要创建一个方法,在str1中搜索str2并返回索引号。 str1中第一次出现str2,如果找不到则返回-1。但是我们不能使用string.indexOf方法。

我对如何做到这一点感到很紧张。

任何帮助将不胜感激

由于

3 个答案:

答案 0 :(得分:1)

这个怎么样:

  1. 对于str1中的每个位置小于或等于str1.length() - str2.length()
    1. 从该位置抓取str1的子串,其长度为str2.length()
    2. 将此子字符串与str2进行比较,如果匹配,则返回位置
  2. return -1
  3. 对不起,但是在这个基本问题上发布代码并不能帮到你。所以我没有。

答案 1 :(得分:0)

只需使用方法myString.GetChartAt(index);做你想做的事。 (例如,在循环系统中使用它来比较字符串str1和str2)。 另一种方法可能是考虑正则表达式来实现你想要的东西,这听起来像是家庭作业,其他的限制是什么?

答案 2 :(得分:0)

如果你想给你的教授留下深刻的印象,请做以下事情......

查找将执行Powerset构建的库或编写自己的代码,从而基本上从搜索字符串生成DFA。然后迭代你的字符串和DFA一次一个字符,如果你最终处于接受状态,你就找到了它。

当您遍历字符串时,请跟踪当前字符的索引。如果你的DFA接受,那么只需从当前索引中减去搜索字符串长度,你就可以在字符串中开始索引。

Powerset Construction

Finite State Automation Based Search