Palindrome Number


ລະດັບຄວາມຫຍຸ້ງຍາກ Easy
ຖາມເລື້ອຍໆໃນ Adobe Amazon Bloomberg ບໍລິສັດ DBOI ກູໂກ MAQ Microsoft o9 ວິທີແກ້ໄຂ
ຄະນິດສາດ

ຖະແຫຼງການບັນຫາ

ບັນຫາ“ Palindrome Number” ລະບຸວ່າທ່ານໄດ້ຮັບເລກ ໝາຍ ເລກທະຫານ. ກວດເບິ່ງວ່າມັນແມ່ນ palindrome ຫຼືບໍ່. ແກ້ໄຂບັນຫານີ້ໂດຍບໍ່ຕ້ອງປ່ຽນເລກທີ່ລະບຸໄວ້ເປັນສາຍ.

Palindrome Number

ຍົກຕົວຢ່າງ

12321
true

ຄໍາອະທິບາຍ

12321 ແມ່ນ ໝາຍ ເລກ palindrome ເພາະວ່າເມື່ອພວກເຮົາປີ້ນກັບກັນ 12321 ມັນຈະໃຫ້ 12321 ເຊິ່ງຄືກັບຕົວເລກທີ່ໃຫ້ໄວ້. ດັ່ງນັ້ນ 12321 ແມ່ນ ໝາຍ ເລກ palindrome.

-12321
false

ຄໍາອະທິບາຍ

-12321 ບໍ່ແມ່ນ ໝາຍ ເລກ palindrome ເພາະວ່າເມື່ອພວກເຮົາປີ້ນ -12321 ມັນໃຫ້ 12321- ເຊິ່ງບໍ່ຄືກັບເລກທີ່ລະບຸໄວ້. ສະນັ້ນ -12321 ບໍ່ແມ່ນເບີ palindrome.

ວິທີການ ສຳ ລັບ ການກວດສອບ Palindrome Number

ວິທີການ ທຳ ອິດທີ່ເຂົ້າມາໃນໃຈຂອງພວກເຮົາແມ່ນການປ່ຽນຕົວເລກທີ່ຖືກມອບໃຫ້ເປັນເຊືອກແລະກວດເບິ່ງວ່າມັນເປັນ palindrome ຫຼືບໍ່. ແຕ່ພວກເຮົາບໍ່ສາມາດເຮັດສິ່ງນີ້ໄດ້ເພາະວ່າວິທີການນີ້ຖືກ ຈຳ ກັດແລະພວກເຮົາຍັງຕ້ອງການພື້ນທີ່ພິເສດ ສຳ ລັບຄອບຄົວ string.

ພວກເຮົາຍັງສາມາດສັງເກດເຫັນຈຸດ ສຳ ຄັນ ໜຶ່ງ ທີ່ວ່າຕົວເລກລົບບໍ່ເຄີຍເປັນ ໝາຍ ເລກ palindrome.

ດັ່ງນັ້ນພວກເຮົາຈະພະຍາຍາມເຂົ້າຫາມັນໃນທາງອື່ນ. ພວກເຮົາຈະປ່ຽນ ຈຳ ນວນແລະເກັບມັນໄວ້ໃນຕົວແປແລະປຽບທຽບຖ້າມັນເທົ່າກັບຕົວເລກເດີມ. ຖ້າຕົວເລກທີ່ຖືກປ່ຽນຄືນແມ່ນເທົ່າກັບຕົວເລກເດີມແລ້ວຕົວເລກແມ່ນ palindrome ອີກອັນ ໜຶ່ງ ມັນບໍ່ແມ່ນ palindrome.

ເພື່ອປີ້ນກັບຕົວເລກທີ່ພວກເຮົາປະຕິບັດ (ສ່ວນທີ່ເຫຼືອ = n% 10) ນີ້ຈະໃຫ້ຕົວເລກສຸດທ້າຍຂອງຕົວເລກ. ພວກເຮົາຈະສ້າງ ຈຳ ນວນປີ້ນກັບກັນໂດຍ (reversed = ປີ້ນກັບກັນ * 10 + ທີ່ເຫລືອ). ຕອນນີ້ພວກເຮົາຈະແບ່ງເລກ 10 ໃຫ້ໄດ້ຕົວເລກສຸດທ້າຍທີສອງ. ພວກເຮົາເຮັດເລື້ມຄືນຂະບວນການນີ້ຈົນກ່ວາມູນຄ່າຂອງ n ແມ່ນໃຫຍ່ກວ່າສູນ.

ໃນທີ່ສຸດ, ພວກເຮົາຈະປຽບທຽບຖ້າວ່າຕົວເລກເດີມແມ່ນເທົ່າກັບຕົວເລກທີ່ຖືກປ່ຽນຄືນ. ຖ້າມີແລ້ວເລກແມ່ນ ໝາຍ ເລກ palindrome ອີກອັນ ໜຶ່ງ ມັນບໍ່ແມ່ນ ໝາຍ ເລກ palindrome.

ລະຫັດ

ລະຫັດ C ++ ສຳ ລັບ Palindrome Number

#include<bits/stdc++.h>
using namespace std;
bool isPalindrome(int num){
  if(num < 0) return  false; 
  int reversed = 0, remainder, original = num;
  while(num != 0) {
        remainder = num % 10; 
        reversed = reversed * 10 + remainder; 
        num  /= 10; 
   }
   return original == reversed;
}
  
int main() 
{ 
   if(isPalindrome(12321)) 
     cout<<"Yes, it is Palindrome"; 
   else
     cout<<"No, not Palindrome"; 
}
Yes, it is Palindrome

ລະຫັດ Java ສຳ ລັບ Palindrome Number

public class check
{	 
  static  boolean isPalindrome(int num){
   if(num < 0) return  false; 
   int reversed = 0, remainder, original = num;
   while(num != 0) {
        remainder = num % 10; 
        reversed = reversed * 10 + remainder; 
        num  /= 10; 
    }
    return original == reversed;
}
  
public static void main(String args[]){ 
    if(isPalindrome(12321)) 
      System.out.println("Yes, it is Palindrome"); 
    else
      System.out.println("No, not Palindrome"); 
  } 
} 

Yes, it is Palindrome

ການວິເຄາະຄວາມສັບສົນ

ຄວາມສັບສົນເວລາ

ຄວາມສັບສົນທີ່ໃຊ້ເວລາໃນການກວດເບິ່ງວ່າຕົວເລກແມ່ນ palindrome ຫຼືບໍ່ແມ່ນ  

ຄວາມສັບສົນໃນອະວະກາດ

O (1) ເນື່ອງຈາກວ່າພວກເຮົາ ກຳ ລັງໃຊ້ຕົວແປພິເສດອີກອັນ ໜຶ່ງ ເພື່ອເກັບ ຈຳ ນວນປີ້ນກັບກັນ.