কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে স্ট্রিং রিভার্স করা স্পেস পজিশন ঠিক রেখে

সমস্যা

একটি স্ট্রিং দেওয়া আছে যাতে স্পেস থাকতে পারে। ফাংশনটি স্ট্রিংয়ের প্রতিটি শব্দকে আভ্যন্তরীণভাবে রিভার্স করবে, কিন্তু শব্দগুলোর মধ্যবর্তী স্পেস বা শব্দের ক্রম বদলাবে না। অর্থাৎ, শব্দের ভেতরের ক্যারেক্টারের ক্রম উল্টানো হবে, কিন্তু স্পেসগুলো যেন যেন থাকবে।

উদাহরণ কোড

const str = 'this is normal string';

const reverseWordsWithin = (str = '') => {
  let res = "";
  for (let i = str.length - 1; i >= 0; i--) {
    if (str[i] != " ") {
      res += str[i];
    }
    if (str[res.length] == " ") {
      res += str[res.length];
    }
  }
  return res;
};

console.log(reverseWordsWithin(str));

আউটপুট

gnir ts lamron sisiht

ব্যাখ্যা

  • ইনপুট: 'this is normal string'
  • শব্দগুলো: this, is, normal, string
  • প্রতিটি শব্দ রিভার্স: siht, si, lamron, gnirts
  • স্পেস পজিশন ঠিক রেখে জয়ন: siht si lamron gnirts → কিন্তু প্রদত্ত কোডের আউটপুট gnir ts lamron sisiht যা পুরো স্ট্রিং রিভার্স করেছে স্পেস পজিশন মেনটেইন করে।

দ্রষ্টব্য: প্রদত্ত কোডের লজিক

প্রদত্ত কোডটি আসলে পুরো স্ট্রিংকে রিভার্স করছে, কিন্তু স্পেসগুলোকে অরিজিনাল পজিশনে রাখছে। এটি "শব্দ রিভার্স" না করে "স্ট্রিং রিভার্স উইথ স্পেস প্রিজারভেশন"।

সঠিক "শব্দ-ভিত্তিক রিভার্স" (প্রতিটি শব্দ আলাদা রিভার্স)


const reverseEachWord = (str = '') => 
  str.split(' ')                    // স্পেস দিয়ে স্প্লিট
     .map(word => word.split('').reverse().join('')) // প্রতিটি শব্দ রিভার্স
     .join(' ');                     // স্পেস দিয়ে জয়ন

console.log(reverseEachWord('this is normal string')); 
// "siht si lamron gnirts"

স্পেস পজিশন প্রিজার্ভ করে পুরো স্ট্রিং রিভার্স (প্রদত্ত লজিকের স্পষ্ট সংস্করণ)


const reversePreserveSpaces = (str = '') => {
  const chars = str.split('');
  const nonSpaceChars = chars.filter(c => c !== ' ').reverse();
  return chars.map(c => c === ' ' ? ' ' : nonSpaceChars.shift()).join('');
};

console.log(reversePreserveSpaces('this is normal string')); 
// "gnir ts lamron sisiht" (প্রদত্ত আউটপুটের মত)
  1. JavaScript-এ do...while লুপ: কমপক্ষে একবার চালানো নিশ্চিত

  2. JavaScript-এ while লুপ: শর্ত সত্য থাকা পর্যন্ত পুনরাবৃত্তি

  3. জাভাস্ক্রিপ্টে টাইম স্ট্রিং রেক্টিফাই করা (HH:MM:SS)

  4. জাভাস্ক্রিপ্টে শব্দ উল্টে 스페স সংরক্ষণ