জাভাস্ক্রিপ্ট অ্যালগরিদম ও ডাটা স্ট্রাকচারঃ স্ট্রিং উল্টানো
সমস্যাঃ আমরা একটা ফাংশনে একটা স্ট্রিং আর্গুমেন্ট হিসেবে দিবো। সেটা আমাদেরকে স্ট্রিং টা সম্পূর্ণ উল্টো করে রিটার্ণ করবে। যেমনঃ
stringReverese('Hello World!');
// Should Return: !dlroW olleH
সমস্যা বিশ্লেষণ ও সম্ভাব্য সমাধানের রাস্তাঃ আমরা এখানে অ্যারে হলে অনেক সহজেই উল্টিয়ে ফেলতে পারতাম। কারণ অ্যারের রিভার্স reverse()
মেথড আছে। এখন আমরা চাইলে এখানে আমাদের স্ট্রিংটাকেই ভাগ split
করে অ্যারেতে নিয়ে যেতে পারি। তারপর অ্যারে থেকে অ্যারের রিভার্স মেথড দিয়ে উল্টিয়ে আবার অ্যারেটাকে অ্যারেরই join()
মেথড দিয়ে আবার স্ট্রিং এ নিয়ে আসতে পারি।
অ্যালগরিদমঃ
স্টেপ ১ঃ শুরু
স্টেপ ২ঃ স্ট্রিং টাকে অ্যারেতে নিয়ে যাওয়া
স্টেপ ৩ঃ অ্যারেটাকে অ্যারের রিভার্স মেথড দিয়ে উল্টিয়ে ফেলা
স্টেপ ৪ঃ এবার উল্টানো অ্যারেটাকে অ্যারেরই আরেকটা মেথড দিয়ে জয়েন করে পুনরায় স্ট্রিং এ রূপান্তর করা।
স্টেপ ৫ঃ এবার সেই স্ট্রিং টাকে রিটার্ন করা।
স্টেপ ৬ঃ শেষ!
কোডঃ
function stringReverese(str) {
return str.split('').reverse().join('');
}
টেস্টঃ
stringReverese('Hello World!');
stringReverese('Zonayed Ahmed');
stringReverese('ABCDabcd1234!');
আরেকটা সম্ভাব্য সমাধানের রাস্তাঃ আমরা এখানে আরেকটা সমাধানের চেষ্টা করতে পারি লুপ ব্যবহার করে। একটা খালি স্ট্রিং নিয়ে আমাদের কাঙ্খিত স্ট্রিং এর উপর লুপ চালিয়ে প্রতিটা ক্যারেক্টার সেই স্ট্রিং এর প্রথমে বসিয়ে দিতে হবে। তাহলে এই হিসেবে একদম প্রথম ক্যারেক্টারটা সবার শেষে চলে যাবে, আর একদম শেষেরটা সবার প্রথমে বসবে। ব্যাস, হয়ে গেলো আমাদের স্ট্রিং উল্টানো।
অ্যালগরিদমঃ
স্টেপ ১ঃ শুরু
স্টেপ ২ঃ একটা খালি ভ্যারিয়েবল reversed
নেওয়া
স্টেপ ৩ঃ এবার স্ট্রিং টার উপরে প্রতিটা ক্যারেক্টার char
অ্যাক্সেস করতে লুপ চালানো
স্টেপ ৪ঃ এবার লুপের প্রতিটা ইটারেশনে প্রতি ক্যারেক্টার char
এর জন্যে আমরা আমাদের reserved
ভ্যারিয়েবলে প্রথমে ক্যারেক্টার char
টা অ্যাড করবো এবং পরে reserved
অ্যাড করবো এভাবেঃ reserved = char + reserved
(এখানেই আসল ট্রিক)
স্টেপ ৫ঃ লুপ শেষে reserved
রিটার্ন করা।
স্টেপ ৬ঃ শেষ!
কোডঃ
function stringReverese(str) {
let reversed = '';
for(let char of str) {
reversed = char + reversed;
}
return reversed;
}
টেস্টঃ
stringReverese('Hello World!');
stringReverese('Zonayed Ahmed');
stringReverese('ABCDabcd1234!');
আমার এই লেখা পূর্বে আমার ব্লগে প্রকাশিত হয়েছে। চাইলে আমার ব্লগ থেকে ঘুরে আসতে পারেন। ব্লগ থেকে সাবস্ক্রাইব করলে আমি নিজে থেকেই আমার নতুন লেখাগুলো আপনার ইমেইলে প্রতি শুক্রবার সকালে পাঠিয়ে দিবো। ভালো থাকবেন। হ্যাপী প্রোগ্রামিং!