অতিরিক্ত কোনও স্থান ব্যবহার না করেই এই সমস্যার সমাধান করা এমন কোনও উত্তর আমি লক্ষ্য করিনি, অর্থাত্, আমি যে সমস্ত সমাধান দেখেছি সেগুলি একটি স্ট্রিং, বা সংখ্যাটি বিপরীত করার জন্য অন্য কোনও পূর্ণসংখ্যা বা অন্য কোনও ডেটা স্ট্রাকচার ব্যবহার করেছে।
যদিও জাভা-র মতো ভাষা পূর্ণসংখ্যার ওভারফ্লোতে প্রায় মোড়ানো, সি এর মতো ভাষায় এই আচরণটি পূর্বনির্ধারিত (জাভাতে 2147483647 (ইন্টিজার.ম্যাক্স_ভালিউ) বিপরীত করার চেষ্টা করুন )
ওয়ার্কআরউন্ডটি দীর্ঘ বা কিছু ব্যবহার করতে পারে তবে, স্টাইলিস্টিকভাবে, আমি বেশ কিছু করি না যে পদ্ধতির মত।
এখন, একটি প্যালিনড্রমিক সংখ্যার ধারণাটি হ'ল যে সংখ্যাটি একই রকম এবং সামনের দিকে পড়তে হবে। গ্রেট। এই তথ্য ব্যবহার করে, আমরা প্রথম সংখ্যা এবং শেষ সংখ্যাটি তুলনা করতে পারি। ট্রিকটি প্রথম অঙ্কের জন্য আমাদের সংখ্যার ক্রম দরকার। বলুন, 12321. এটি 10000 দ্বারা ভাগ করা আমাদের শীর্ষস্থানীয় 1টি পেতে পারে The ট্রুলিং 1টি 10 এর সাথে মোড গ্রহণ করে পুনরুদ্ধার করা যেতে পারে Now এখন, এটি হ্রাস করার জন্য ২২২ এ (12321 % 10000)/10 = (2321)/10 = 232
। এবং এখন, 10000 টি 2 এর গুণক দ্বারা হ্রাস করা দরকার So সুতরাং এখন জাভা কোডে ...
private static boolean isPalindrome(int n) {
if (n < 0)
return false;
int div = 1;
// find the divisor
while (n / div >= 10)
div *= 10;
// any number less than 10 is a palindrome
while (n != 0) {
int leading = n / div;
int trailing = n % 10;
if (leading != trailing)
return false;
// % with div gets rid of leading digit
// dividing result by 10 gets rid of trailing digit
n = (n % div) / 10;
// got rid of 2 numbers, update div accordingly
div /= 100;
}
return true;
}
সংখ্যায় শূন্য রয়েছে এমন মামলাগুলি কভার করার জন্য হার্দিকের পরামর্শ অনুসারে সম্পাদিত ।