java - 字谜的运行时错误 - 线程 "main"java.lang.StringIndexOutOfBoundsException : String index out of range: -1 中出现异常

标签 java string anagram

我正在尝试解决这个问题 https://www.hackerrank.com/challenges/anagram 这是我的代码

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;


public class Anagram {
public static void main(String[] args)
{
    Scanner reader = new Scanner(System.in);
    int t = reader.nextInt();


    while((t--)>0)
   {    
    String input = reader.nextLine();

    if((input.length())%2 == 1)
        System.out.println(-1);
    else
    {
        int x = input.length();
    int q = (int)(Math.floor((x/2)));

    String input1 = input.substring(0,q-1);

    int [] count1 = new int[26];
    for( int i = 0; i < input1.length(); i++ )
    {
        char ch1 = input1.charAt(i);
        count1[ch1-'a']++;
    }

    String input2 = input.substring(q,x-1);

    int [] count2 = new int[26];
    for( int i = 0; i < input2.length(); i++ )
    {
        char ch2 = input2.charAt(i);
        count2[ch2-'a']++;
    }

    int count =0;
    for(int j=0;j<26;j++)
    {
        count = count + Math.abs(count1[j]-count2[j]);
    }

    System.out.println(count/2);
    }
   }
  }
 }

我总是收到这个错误 线程“main”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1 在 java.lang.String.substring(String.java:1911) 在 Anagram.main(Anagram.java:26)

我知道我没有为子字符串选择正确的索引,但看起来很好,任何人都可以帮助我

最佳答案

您的子字符串索引应如下所示: 字符串输入1 = input.substring(0,q); 字符串输入2 = input.substring(q,x); 这是因为第二个参数(结束索引)不包含在内。 另外,根据我的测试,我唯一一次得到 StringIndexOutOfBoundsException 是当我使用空字符串(“”)进行测试时。但在我提到的更改之后,您甚至不会收到该错误。

关于java - 字谜的运行时错误 - 线程 "main"java.lang.StringIndexOutOfBoundsException : String index out of range: -1 中出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29183966/

相关文章:

java - 我无法在 ubuntu 终端中打开 open-in-jd-gui.sh。如何使用 open-in-jd-gui.sh tar 文件

java - 字符串、byte[] 和压缩

javascript - 字符串元素和对象键值

java - 拼字游戏字谜生成器

Java:实现通用迭代器

java - 计算文件中的行数

java - 为什么通过将其大小写更改为大写然后再更改为小写来比较同一个字符两次?

java - 如何在带有单词和整数的字符串中的数字之间添加空格?

ios - Swift 字谜检查器