Проверка на палиндром java

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

11 ответов

Вы можете попробовать что-то вроде этого:

102 Jeff Foster [2011-12-09 14:27:00]

Использование reverse является излишним, потому что вам не нужно создавать дополнительную строку, вам просто нужно запросить существующий. В следующем примере проверяется, что первый и последний символы являются одинаковыми, а затем идут дальше внутри строки, проверяющей результаты каждый раз. Он возвращается, как только s не является палиндром.

Проблема с подходом reverse заключается в том, что он выполняет всю работу. Он выполняет дорогостоящее действие над строкой, затем проверяет символ по символу, пока строки не будут равны, а затем вернет false, если это не палиндром. Если вы просто сравниваете маленькие строки все время, тогда это нормально, но если вы хотите защитить себя от большего ввода, вам следует рассмотреть этот алгоритм.

этот вопрос уже есть ответ здесь:

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

11 ответов

используя reverse является излишним, потому что вам не нужно генерировать дополнительную строку, вам просто нужно запросить существующую. В следующем примере проверяется, что первый и последний символы одинаковы, а затем проходит дальше внутри строки, проверяя результаты каждый раз. Он возвращается, как только s не является палиндромом.

проблема с reverse подход заключается в том, что он выполняет всю работу спереди. Он выполняет дорогостоящее действие над строкой, а затем проверяет символ по символ до тех пор, пока строки не будут равны и только тогда возвращает false, если это не палиндром. Если вы просто сравниваете небольшие строки все время, то это нормально, но если вы хотите защитить себя от большего ввода, тогда вы должны рассмотреть этот алгоритм.

Читайте также  Проблема с цветами в старых играх

для наименьших строк кода и простейшего случая

вот простой пример"

вот хороший класс :

вы можете попробовать что-то вроде этого :

Я думаю, это простой способ проверить палиндром

Я новичок в java, и я принимаю ваш вопрос как вызов, чтобы улучшить свои знания, а также, пожалуйста, простите меня, если это не отвечает на ваш вопрос хорошо:

  1. если строка не состоит из букв или только одной буквы, это палиндром.
  2. в противном случае сравните первую и последнюю буквы строки.
    • если первая и последняя буквы отличаются, то строка не является палиндромом
    • в противном случае, первый и последний буквы те же. Удалите их из строки и определите, является ли оставшаяся строка палиндромом. Возьмите ответ для этой меньшей строки и используйте его в качестве ответа для исходной строки, а затем повторите из 1.

    единственной Строковой манипуляцией является изменение строки в верхний регистр, чтобы вы могли ввести что-то вроде "XScsX"

    Нужно определить является ли строка палиндромом. Палиндромом называется строка, которая пишется одинаково слева направо и справа налево (в том числе пустая). При определении "палиндромности" строки должны учитываться только буквы и цифры. А пробелы, знаки препинания, а также регистр символов должны игнорироваться.

    Sample Input: Madam, I’m Adam!

    Sample Output: true

    убрать пробелы можно с помощью .replace(" ",""); а как отфильтровать строку от знаков препинания? общий код который работает на строки без знаков препинания:

    5 ответов 5

    Метод определяет является ли строка палиндромом. Решение в одну строчку.

    • replaceAll("\W","") : убираем из строки все не нужные символы (знаки препинания, пробелы и т.д.);
    • new StringBuilder : создаем вторую строку, но пересортированную в обратном порядке с помощью метода reverse() ;
    • equalsIgnoreCase : сравниваем их между собой, игнорируя регистр.
    Ссылка на основную публикацию
    Adblock
    detector