Как заставить программу-палиндром с использованием рекурсии игнорировать специальные символы во всех местах строки в JavJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как заставить программу-палиндром с использованием рекурсии игнорировать специальные символы во всех местах строки в Jav

Сообщение Anonymous »

У меня возникла небольшая логическая ошибка в моей программе-палиндроме: когда я вставляю специальные символы в начало или конец строки, я получаю указание на то, что строка не является палиндромом. Я программирую палиндром так, чтобы при рассмотрении строки игнорировались все специальные символы. Например, @bob не будет считаться палиндромом, а b@ob будет считаться палиндромом. Как мне отредактировать свой код, чтобы специальные символы игнорировались независимо от того, где находится позиция? Все это делается посредством рекурсии.
'''
import java.util.Scanner;
public class recursionExercision {

Код: Выделить всё

//the recursive function that checks to see whether the
//string is a palindrone or not
public static boolean checkPalindrome(String str, int firstChar, int lastChar) {
//if only one character exists
if (firstChar == lastChar)
return true;

//checks to see if the first and last characters match
if ((str.charAt(firstChar)) != (str.charAt(lastChar)))

return false;

//checks to see if it has characters
if (!isChar(str))
return true;

//checks the middle strings with multiple characters
//on whether or not they are a palindrome with recursive method
if (firstChar < lastChar + 1)
return checkPalindrome(str, firstChar + 1, lastChar - 1 );
return true;

}
//method that actually determines what a palindrome is
public static boolean isAPalindrome(String str) {

int n = str.length();
//if string is not 0 or 1 then it's a palindrome
if(n == 0 || n == 1)
return false;
return checkPalindrome(str, 0, n - 1);

}

//method that checks for characters
public static boolean isChar(String str) {

for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (!Character.isLetter(c) && !Character.isDigit(c))
return false;
}
return true;
}

//tests out recursive methods
public static void main(String args[]) {

Scanner scanner = new Scanner(System.in);
System.out.println("Enter a string to see if it's a palindrome:");

String str = scanner.nextLine(); //input from the user

//checks to see if it's a palindrome and puts them all
//to be lower case to ignore the case issue
if(isAPalindrome(str.toLowerCase()))
System.out.println(str+" is a palindrome");

else
System.out.println(str+" is not a palindrome");

scanner.close();
}
'''

Подробнее здесь: https://stackoverflow.com/questions/721 ... ers-in-all
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»