সমস্যা বিবরণ
একটি স্ট্রিং দেওয়া আছে। এটি প্যালিনড্রোম (উল্টা পড়লেও একই) কিনা চেক করতে হবে। বিল্ট-ইন স্ট্রিং মেথড বা অ্যারে কনভারশন ব্যবহার করা যাবে না।
উদাহরণ: 'madam', 'dad', 'abcdcba' → true
সমাধান
const str = 'madam';
const isPalindrome = (str = '') => {
const { length } = str;
let start = 0, end = length - 1;
while (start < end) {
const leftChar = str[start];
const rightChar = str[end];
if (leftChar !== rightChar) return false;
start++;
end--;
}
return true;
};
console.log(isPalindrome(str)); // true
console.log(isPalindrome('avsssvsa')); // false
আউটপুট
true false
ব্যাখ্যা
- টু-পয়েন্টার টেকনিক:
start(শুরু) এবংend(শেষ) থেকে কেন্দ্রের দিকে। - ম্যাচ না হলে সাথে সাথে
false। - লুপ শেষ হলে
true। - টাইম: O(n), স্পেস: O(1)।