Site icon AppTractor

Задачи с собеседований: является ли строка палиндромом

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

Например, ввод: Madam, I’m Adam!

Вывод: true

Является ли строка палиндромом: решение

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

Код на 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")

Exit mobile version