Еще одна популярная задача с собеседований разработчика — нужно определить является ли строка палиндромом. Палиндромом называется строка, которая пишется одинаково слева направо и справа налево (в том числе пустая). При определении «палиндромности» строки должны учитываться только буквы и цифры. А пробелы, знаки препинания, а также регистр символов должны игнорироваться.
Например, ввод: Madam, I’m Adam!
Вывод: true
Является ли строка палиндромом: решение
Метод определяет является ли строка палиндромом. Решение в одну строчку.
- replaceAll(«\\W»,»»): убираем из строки все не нужные символы (знаки препинания, пробелы и т.д.);
- new StringBuilder: создаем вторую строку, но пересортированную в обратном порядке с помощью метода reverse();
- equalsIgnoreCase: сравниваем их между собой, игнорируя регистр.
Код на Java:
public static boolean isPalindrome(String text) { return text.replaceAll("\\W","") .equalsIgnoreCase(new StringBuilder(text.replaceAll("\\W","")) .reverse().toString()); }
Код с перебором на C++:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i,j; char str[20],str1[20]; puts("Введите строку:\n"); gets(str); j=0; for(i=strlen(str)-1; i>=0; i--) { str1[j]=str[i]; j++; } str1[j]=0; if(strcmp(str,str1)==0) puts("да\n"); else puts("нет\n"); system("pause"); return 0; }
Код на Python:
# ввод строки s = input() # длинна строки l = len(s) # длина половины строки # ( Находится делением нацело на 2. # Если количество символов нечетно, # то стоящий в середине не учитывается, # т.к его сравниваемая пара - он сам. ) l = l//2 # количество итераций цикла равно длине половины строки for i in range(l): # Если символ с индексом i не равен "симметричному" # символу с конца строки (который находится путем # индексации с конца), if s[i] != s[-1-i]: # то выводится сообщение, что строка не палиндром print("It's not palindrome") # выход из программы quit() # До этого места кода программа дойдет, если не произойдет # выход из программы в цикле выше. # Если выхода не произошло, значит строка - палиндром. print("It's palindrome")