Розбір
Аналіз алгоритму
Прочитаємо вхідне число як рядок у символьний масив s
. Нехай len
– довжина рядка s
, зменшена на 1 (індекс комірки символьного масиву, у якій знаходиться остання цифра числа). Рядок є паліндромом, якщо для всіх .
Розглянемо число 4570754 довжини 7. Тоді len = 7 – 1 = 6
. Мають місце рівності:
s[0] = s[6 - 0] = s[6] = ‘4’;
s[1] = s[6 - 1] = s[5] = ‘5’;
s[2] = s[6 - 2] = s[4] = ‘7’;
Реалізація алгоритму
Вхідне число читаємо в символьний масив s.
char s[50];
Читаємо вхідне число як рядок. Встановлюємо len
рівним індексу останньої цифри.
gets(s); len = strlen(s) - 1; flag = 0;
Встановимо flag = 0
, що означає, що число є паліндромом. Якщо рівність порушується для деякого i
, то число не паліндром, встановлюємо flag = 1
.
for(i = 0; i < len - i; i++) if (s[i] != s[len - i]) flag = 1;
Залежно від значення flag
виводимо результат.
if (flag == 0) printf("Yes\n"); else printf("No\n");
Реалізація – функція IsPalindrome
#include <stdio.h> #include <string.h> char s[50]; int flag; int IsPalindrome(char *s) { int i = 0, j = strlen(s) - 1; while(i < j) { if (s[i] != s[j]) return 0; i++; j--; } return 1; } int main(void) { gets(s); flag = IsPalindrome(s); if (flag == 1) printf("Yes\n"); else printf("No\n"); return 0; }
Реалізація – STL reverse
#include <cstdio> #include <iostream> #include <string> #include <algorithm> using namespace std; string p, q; int main(void) { cin >> p; q = p; reverse(q.begin(),q.end()); if (p == q) printf("Yes\n"); else printf("No\n"); return 0; }
Java реалізація
import java.util.*; public class Main { public static void main(String[] args) { Scanner con = new Scanner(System.in); char[] s = con.nextLine().toCharArray(); int flag = 0, len = s.length - 1; for(int i = 0; i < len - i; i++) if (s[i] != s[len - i]) flag = 1; if (flag == 0) System.out.println("Yes"); else System.out.println("No"); con.close(); } }
Java реалізація – функція IsPalindrome
import java.util.*; public class Main { public static int IsPalindrome(String s) { int i = 0, j = s.length() - 1; while(i < j) { if (s.charAt(i) != s.charAt(j)) return 0; i++; j--; } return 1; } public static void main(String[] args) { Scanner con = new Scanner(System.in); String s = con.next(); int flag = IsPalindrome(s); if (flag == 1) System.out.println("Yes"); else System.out.println("No"); con.close(); } }
Python реалізація
a = input() if a == a[::-1]: print("Yes") else: print("No")