【问题标题】:Finding index of a substring in Java在Java中查找子字符串的索引
【发布时间】:2011-05-14 05:40:16
【问题描述】:

我有一个问题。

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

我不知道该怎么做。

任何帮助将不胜感激

谢谢

【问题讨论】:

  • 为什么不能使用string.indexOf
  • 可以用正则表达式吗?或者这是一个编程作业,你必须从第一原则开始做?
  • @gshauger:你指的是aioobe吗?他刚刚编辑这个问题,它最初来自 user753334。
  • 不使用 String.indexOf,而是从 indexOf 复制代码并更改代码,使其在另一个类中工作。 ;)

标签: java


【解决方案1】:

这个怎么样:

  1. 对于 str1 中小于或等于 str1.length() - str2.length() 的每个位置
    1. 从该位置抓取 str1 的长度为 str2.length() 的子字符串
    2. 将此子字符串与str2进行比较,如果匹配,则返回位置
  2. 返回-1

很抱歉,将代码发布到这个基本问题对您没有帮助。所以我没有。

【讨论】:

  • 嘿,谢谢南。我会考虑你的解决方案。我只是想要逻辑。还是谢谢
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    如果您想真正打动您的教授,请执行以下操作...

    找到一个可以执行 Powerset 构造的库,或者编写您自己的代码,从您的搜索字符串中生成一个 DFA。然后一次遍历你的字符串和 DFA 一个字符,如果你最终处于接受状态,你就找到了它。

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

    Powerset Construction

    Finite State Automation Based Search

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-17
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      相关资源
      最近更新 更多