GitHub
Задачи с собеседований: является ли строка палиндромом
Еще одна популярная задача с собеседований разработчика — нужно определить является ли строка палиндромом. Палиндромом называется строка, которая пишется одинаково слева направо и справа налево (в том числе пустая). При определении «палиндромности» строки должны учитываться только буквы и цифры. А пробелы, знаки препинания, а также регистр символов должны игнорироваться.
Например, ввод: 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")
-
Аналитика магазинов3 недели назад
Мобильный рынок Ближнего Востока: исследование Bidease и Sensor Tower выявляет драйверы роста
-
Видео и подкасты для разработчиков3 недели назад
Разбор кода: iOS-приложение для управления личными финансами на Swift. Часть 1
-
Новости3 недели назад
Видео и подкасты о мобильной разработке 2025.47
-
Разработка4 недели назад
100 уроков о том, как я довёл своё приложение до продажи за семизначную сумму


