При условии, что String, моя цель - проверить, могу ли я сделать эту строку палиндровой строкой даже после повторной компоновки символов.Поиск палиндрома String throws StringIndexOutOfBoundsException, возможная причина?
Для например: aaabbbb
может быть палиндром путем перехода к: bbaaabb
Так что я стараюсь, чтобы сравнить все перестановки строки с обратным, если он существует, распечатайте ДА! , А вот код до сих пор:
private static void permutation(String prefix, String str)
{
temp.setLength(0); //temp is a StringBuilder
int n = str.length();
if((n==0) && (str.charAt(0)==str.charAt(n-1)))
{
temp.append(prefix);
temp.reverse();
if(prefix.equals(temp.toString()))
{
System.out.println("YES");
System.exit(0);
}
}
else
{
for(int i=0;i<n;i++)
permutation(prefix+str.charAt(i),str.substring(0,i)+str.substring(i+1,n));
}
}
Теперь проблема, во время выполнения я получаю java.lang.StringIndexOutOfBoundsException на этой линии: permutation(prefix+str.charAt(i),str.substring(0,i)+str.substring(i+1,n));
Что может быть, возможно, причиной этого?
Какие шаги вы предприняли для самостоятельной отладки проблемы? –
Это связано с тем, что при i = n-1 подстрока (i + 1, n) станет подстрокой (n, n) ... так как строка индексируется 0. она будет выходить за пределы исключения. –
Вы пытаетесь получить доступ к индексу, который не существует ... также вы можете попробовать - подсчитать буквы в данной строке ... для четного случая каждая буква должна иметь счет '2' и для нечетных случаев - то же самое выполняется, за исключением одной буквы в данной строке. – Tirath