Palindrom ədəd#1608

Palindrom ədəd (Həll təhlili)

Girişdəki ədədi sətir kimi simvol massivinə kimi oxuyaq. ilə massivinin uzunluğu, son simvol indeksindən çıxılmış halını göstərək. Simvolun palindrom olması üçün, bütün 0 \le i \le len / 2 üçün s[i] = s[len - i] şərti ödənilməlidir.

Məsələn, uzunluğu olan ədədinə baxaq. Onda len = 7 - 1 = 6. Aşağıdakı bərabərliklərə sahibik:

Algoritmin reallaşdırılması

Girişdəki ədəd simvol massivində olaraq saxlanılır.

char s[50];

Girişdəki ədədi sətir kimi oxuyuruq. olaraq son rəqəmin indeksini təyin edirik.

gets(s);
len = strlen(s) - 1;

flag = 0, yəni ədədin palindrom olduğunu göstərir, olaraq təyin edirik.

flag = 0;

Əgər hər hansı üçün bərabərlik s[i] = s[len - i] pozulursa, ədəd palindrom deyil və flag = 1 təyin edirik.

for(i = 0; i <= len / 2; i++)
  if (s[i] != s[len - i]) flag = 1;

dəyişənin dəyərindən asılı olaraq nəticəni çap edirik.

if (flag == 0) printf("Yes\n"); else printf("No\n");

Algoritmin reallaşdırılması — IsPalindrome funksiyası

Girişdəki ədəd simvol massivində olaraq saxlanılır.

char s[50];

IsPalindrome funksiyası sətirinin palindrom olub olmadığını yoxlayır.

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;
}

Proqramın əsas hissəsi. Girişdəki ədədi sətir kimi oxuyuruq.

gets(s);

sətirinin palindrom olub olmadığını yoxlayırıq.

flag = IsPalindrome(s);

dəyişənin dəyərindən asılı olaraq nəticəni çap edirik.

if (flag == 1) printf("Yes\n"); else printf("No\n");

Algoritmin reallaşdırılması — STL reverse

Girişdəki ədədi olaraq sətir kimi oxuyuruq.

cin >> p;

sətirini tərsinə çeviririk: = reverse(p).

q = p; reverse(q.begin(),q.end());

və sətirləri eynidirsə, giriş sətiri palindromdur.

if (p == q) printf("Yes\n"); else printf("No\n");

Java reallaşdırılması

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 reallaşdırılması — IsPalindrome funksiyası

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 reallaşdırılması

Girişdəki ədədi sətir kimi oxuyuruq.

a = input()

sətirinin tərsini almaq üçün a['::-1'] istifadə edin. sətiri tərsi ilə uyğundursa, müvafiq cavabı çap edirik.

if a == a[::-1]: 
  print("Yes")
else: 
  print("No")