返回字符串s或-1

时间:2018-03-12 21:45:40

标签: java

我似乎无法弄清楚如何做到这一点......我被困住了。我可以解决它,但我无法弄清楚如何编写代码。我知道这段代码可能甚至没有接近正确,但我不确定最简单的方法是将chars字符串转换为字符数组还是我离这里很近?

我知道我写的是错的,但我只是想把它写出来,因为它基本上就是我想要做的。感谢您的帮助!

public static int indexOfAny(String s, String chars) {
    for (int i = 0; i <= s.length(); i++) {
        if ((s.charAt(i)).equals(chars)) {
            return i;
        } else {
            return -1;
        }
    }
 }

3 个答案:

答案 0 :(得分:1)

假设您必须检查chars中的每个字符,并且您不想做出其他假设,例如删除重复的支票:

public static int indexOfAny(String s, String chars) {
  int i = -1;
  for (char c : chars.toCharArray()) {
    int pos = s.indexOf(c);
    if (pos >= 0 && (pos < i || i < 0)) {
      i = pos;
    }     
  }
  return i;
}

答案 1 :(得分:0)

使用

  

string.indexOf(char)&gt; -1

取代for循环

public static int indexOfAny(String s, String chars) {
    if(string.indexOf(chars) > -1)
       return string.indexOf(chars);
    else
       return -1;
}

如果字符有多个字符单独检查

for (char c : chars.toCharArray()) {
     if(string.indexOf(c) > -1)
       return string.indexOf(c);
}
return -1;

你甚至不需要函数indexOfAny老实说..

答案 2 :(得分:0)

您需要遍历chars内的所有字符,而不是检查s中每个字符的字符串相等性。

public static int indexOfAny(String s, String chars) {

    for (int i = 0; i < s.length(); i++) {
        for (int j = 0; j < chars.length(); j++) {

            if (s.charAt(i) == chars.charAt(j)) {

                return i;
            }
        }
    }

    return -1;
}

或者更短一些:

public static int indexOfAny(String s, String chars) {

    for (char c : chars.toCharArray()) {

        int i = s.indexOf(c);
        if (i >= 0) { return i; }
    }

    return -1;
}