不使用lastIndexOf()

时间:2016-11-18 10:53:47

标签: java lastindexof

下午好, 我想写一个到达(询问)两个字符串并检查String2是否在String1情况下的方法。如果s2在s1中,则返回索引 String2的最后一次出现,否则返回-1。使用lastIndexOf()方法很容易,但我不希望这样。实际上,如果我们不使用方便的字符串方法(charAt和length除外)会更好。

所以,这是我的代码到目前为止(这是一个非常糟糕的代码):

int contains() {
    Scanner scan0 = new Scanner(System.in);
        System.out.println("Enter firts string: ");
    String s1 = scan0.nextLine();
        System.out.println("Enter second string: ");
    String s2 = scan0.nextLine();

    for(int i = 0; i<s1.length(); i++) {
        for(int t = 0; t<s2.length(); t++) {
            char desiredChar = s2.charAt(t);
            char letter = s1.charAt(i);
            if(desiredChar == letter)
                System.out.print(s2.charAt(i));
        }

    }
    return 0;
}

它会出现java.lang.StringIndexOutOfBoundsException错误。

1 个答案:

答案 0 :(得分:1)

您不会检查s2s1字符的出现次数。您需要在s1之后浏览char char并检查char和以下一次是否匹配s2。意味着如果你有[{1}}给定的话,你可以遍历strings,例如第一个s1和下一个2,所以你有3个字符就像char=M一样。然后你有s2Mis,因为它们不匹配你必须转到下一个字符串,然后是the,依此类推,直到你有匹配的字符串。一旦你拥有它们就可以返回s1中字符串的第一个char的索引。