当前位置: 首页 > 知识库问答 >
问题:

ArrayIndexOutOfBoundsExctive拆分字符串后

夏祺然
2023-03-14

我在尝试将此代码提交给hackerrank时出现以下错误:https://www.hackerrank.com/challenges/contacts/problem:

线程“main”java中出现异常。lang.ArrayIndexOutOfBoundsException:结果为1。联系人(Solution.java:31)位于Solution。main(Solution.java:66)

然而,它似乎在我的本地机器上工作,但我不确定拆分单词后是否有问题。随着我通过调试检查,它似乎被正确拆分,但我不确定拆分后是否需要使用额外的检查。或者拆分可能有问题。

public static void main(String[] args) {
    List<String> s = List.of("add hack", "add hackerrank", "find hac", "find hak");
    List<List<String>> queries = Collections.singletonList(s);
    List<Integer> result = contacts(queries);
    result.forEach(System.out::println);
}

public static List<Integer> contacts(List<List<String>> queries) {
    Set<String> set = new HashSet<>();
    List<Integer> result = new ArrayList<>();

    for (List<String> query : queries) {
        for (String s : query) {

            // !!! the problem may be caused from these lines >>>
            String operation = s.split(" ")[0];
            String word = s.split(" ")[1];

            if (operation.equals("add")) {
                set.add(word);
            } else if (operation.equals("find")) {
                long count = set.stream().filter(c -> c.startsWith(word)).count();
                result.add((int) count);
            }
        }
    }
    return result;
}

那么,问题的原因可能是什么?

共有1个答案

葛飞扬
2023-03-14

你的问题是你如何解释什么是“查询”。操作和单词不在一个字符串中。它们是查询中的元素。因此...

for (List<String> query : queries) {
    String operation = query.get(0);
    String word = query.get(1);
    // The rest of your code;
}
 类似资料:
  • 问题 你想拆分一个字符串。 解决方案 使用 JavaScript 字符串的 split() 方法: "foo bar baz".split " " # => [ 'foo', 'bar', 'baz' ] 讨论 String 的这个 split() 方法是标准的 JavaScript 方法。可以用来基于任何分隔符——包括正则表达式来拆分字符串。这个方法还可以接受第二个参数,用于指定返回的子字符串数

  • 问题内容: 我有一个名为的字符串,其形式像这样 。 我想使用:分隔符。 这样一来,单词将被拆分成自己的字符串,并将成为另一个字符串。 然后我只想使用2种不同的字符串来显示该字符串。 解决这个问题的最佳方法是什么? 问题答案: 你可能要删除第二个字符串的空格: 如果要用特殊字符(例如dot(。))分割字符串,则应在点之前使用转义字符\ 例: 还有其他方法可以做到这一点。例如,你可以使用类(来自):

  • 问题内容: 如何在PHP中使用定界符分割字符串?例如,如果我有字符串,我如何得到? 问题答案: 做这项工作: 您还可以直接将部分结果提取到变量中:

  • 问题内容: 使用功能split拆分此String。这是我的代码: 当我尝试这样做时,spli只包含一个字符串。似乎Java在拆分时看不到“ ^”。有人知道如何用字母“ ^”分割此字符串吗? 编辑 解决了:P 问题答案: 这是因为需要一个正则表达式,而不是文字字符串。您必须转义,因为它在regex(字符串开头的锚点)中具有不同的含义。因此,拆分实际上是在第一个字符之前完成的,从而使您完整地返回了完整

  • 问题内容: 我想分裂字符串列,其中值 不等于 到 并保存到另一个表,这将是这样的: 这是我的分割字符串代码: 这是我用来调用该函数的代码: 上面的代码给我这个错误: 问题答案: 子查询返回了1个以上的值。当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,不允许这样做。该语句已终止。 由于您的子查询返回了多行,因此发生了上述错误。尝试执行以下操作: 您会看到它将返回3行,每一项返回一

  • 如何将过滤器列表拆分为单个过滤器元件?split2String在线程“main”java.util.regex中导致:异常。PatternSyntaxException:索引10或(|和)附近的未闭合组(