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

জাভাস্ক্রিপ্টে দুটি স্ট্রিং তুলনা করে লাইকনেস পার্সেন্টেজ বের করা


সমস্যা বিবরণ

দুটি স্ট্রিং তুলনা করে কতটুকু মিল আছে তা পার্সেন্টেজে রিটার্ন করতে হবে। ১০০ = পুরোপুরি মিল, ০ = কোনো মিল নেই। লেভেনস্টাইন ডিস্ট্যান্স বা সিমিলারিটি মেট্রিক ব্যবহার করা হয়।

সমাধান

const calculateSimilarity = (str1 = '', str2 = '') => {
  let longer = str1;
  let shorter = str2;
  if (str1.length < str2.length) {
    longer = str2; shorter = str1;
  }
  let longerLength = longer.length;
  if (longerLength == 0) return 1.0;
  return +((longerLength - matchDestructively(longer, shorter)) / parseFloat(longerLength) * 100).toFixed(2);
};

const matchDestructively = (str1 = '', str2 = '') => {
  str1 = str1.toLowerCase();
  str2 = str2.toLowerCase();
  let arr = new Array();
  for (let i = 0; i <= str1.length; i++) {
    let lastValue = i;
    for (let j = 0; j <= str2.length; j++) {
      if (i == 0) { arr[j] = j; }
      else if (j > 0) {
        let newValue = arr[j - 1];
        if (str1.charAt(i - 1) != str2.charAt(j - 1))
          newValue = Math.min(Math.min(newValue, lastValue), arr[j]) + 1;
        arr[j - 1] = lastValue;
        lastValue = newValue;
      }
    }
    if (i > 0) arr[str2.length] = lastValue;
  }
  return arr[str2.length];
};

console.log(calculateSimilarity('Mathematics', 'Mathamatecs'));

আউটপুট

উদাহরণ আউটপুট ভিন্ন হতে পারে (লেভেনস্টাইন ডিস্ট্যান্স বেইসড)।

ব্যাখ্যা

  • matchDestructively লেভেনস্টাইন এডিট ডিস্ট্যান্স ক্যালকুলেট করে (ইনসার্ট, ডিলিট, রিপ্লেস)।
  • সিমিলারিটি = (longerLength - distance) / longerLength * 100।
  1. জাভাস্ক্রিপ্টে শেষ অ্যারে এলিমেন্ট মুছে ফেলা এবং সেটি রিটার্ন করার পদ্ধতি

  2. জাভাস্ক্রিপ্টে অ্যারের প্রথম এলিমেন্ট সরিয়ে রিটার্ন করার উপায়

  3. জাভাস্ক্রিপ্টে বর্তমান লোকেল অনুযায়ী দুটি স্ট্রিং তুলনা করা

  4. জাভাস্ক্রিপ্টে টেমপ্লেট স্ট্রিংস