0

尝试在contains()不使用内置方法的情况下实现方法contains()

这是我的代码:

public static boolean containsCS(String str, CharSequence cs) {
    //char[] chs = str.toCharArray();
    boolean result = false;

    int i=0;
    while(i<str.length()) {
        int j=0;
        while(j<cs.length()) {
            if(NEED TO CHECK IF THERE IS AN INDEX OUT OF BOUNDS EXCEPTION) {
                result = false;
                break;
            }
            if(str.charAt(i+j)==cs.charAt(j)) {
                result|=true; //result = false or true ->>>>> which is true.
                j++;
            } else {
                result = false;
                break;
            }
        }
        i++;
    }
    return false;
}

比方说:

String   str = "llpll"
Charsequence cs = "llo"

我想确保此方法在上述Charsequence有一个或多个char要检查但String用完长度的情况下正常工作。我应该如何写第一个if语句?

4

5 回答 5

3
if (i+cs.length() > str.length()){
   OUT OF BOUNDS
}
于 2013-04-23T15:39:15.053 回答
2

好吧,如果是我,我首先要检查的是我的 char 序列的长度 <= 到我的字符串的长度。

一旦你砍掉那个逻辑路径。如果长度相等,您可以使用 == 那么如果您将 str 切成 cs 长度部分,您也可以在那里进行直接比较。

例如,TonyJ 的 str 和搜索三个字符的序列会堆积如山

托尼·纽约

一个循环,一个 if 语句,而且更加清晰。

于 2013-04-23T16:08:10.687 回答
1

我建议使用并在其中使用contains方法。

编辑 - 对于阅读障碍:链接的方法不是来自 java.lang.String 或 java.lang.Object

如果您不屑于实际查看链接,您会发现它是我引用的 Apache Commons-Lang API 和 StringUtils.contains(...) 方法,它非常清楚地回答了这个问题。

于 2013-04-23T15:36:34.060 回答
0

如果这是为了你的家庭作业,我怀疑是这样,那么我建议你看一下String 类的 API,看看还有哪些其他方法可以帮助找到一个 String 在另一个 String 中的位置。

还可以考虑查看 String 的源代码以了解它是如何实现的。

于 2013-04-23T15:49:59.003 回答
0

我相信你已经知道这一点,但实际上可以看到内置类和方法的实际源代码。所以我先看看那里。IMO,String 类特别有趣。

于 2013-04-23T16:00:49.947 回答