Если задана строка A, выведите «Да», если это палиндром, в противном случае выведите «Нет». - PullRequest
0 голосов
/ 30 апреля 2020

Я хочу проверить, является ли пользовательский ввод палиндромом или нет. Но это не работает, как ожидалось. Пожалуйста, помогите.

Код, который я пробовал:

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String A=sc.next();
        for (int i=0; i<A.length()/2; i++){
            if(A.charAt(i)==A.charAt(A.length()-i-1)) {
                System.out.println("Yes");
            } else {
                System.out.println("No");
            }
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 30 апреля 2020

Вы печатаете «Да» для каждого символа, который имеет тот же символ на противоположном конце строки, и «Нет», если нет. Измените ваш l oop, чтобы он возвращал логическое значение, которое сообщает, является ли строка палиндромом, или нет, а затем выведите его в конце следующим образом:

boolean isPalindrome = true;
for (int i=0; i<A.length()/2; i++){
    if(!A.charAt(i)==A.charAt(A.length()-i-1)){
    isPalindrome = false;            
    }
}

if(isPalindome){
    System.out.println("Yes");
} else {
    System.out.println("No");
}
0 голосов
/ 30 апреля 2020

Вот ваш оригинальный код, слегка измененный.

  • После первых символов, которые не равны, выведите, что это не палиндром, а затем вырваться из l oop, так как нет необходимости продолжать проверку.
  • Как только l oop завершится, он должен быть палиндромом, поэтому укажите это.
  • Нет необходимости в логических значениях .
for (int i = 0; i < A.length()/2; i++) {
     if (A.charAt(i) != A.charAt(A.length() - i - 1)) {
         System.out.println("No");
         break;
     }
     System.out.println("Yes");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...