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

একটি ক্যারেক্টার মুছে দুটি স্ট্রিংয়ের যেকোনো একটার সমান হওয়া স্ট্রিংর সংখ্যা (C++)

দুটি ভিন্ন স্ট্রিং s1 এবং s2 দেওয়া আছে। কাজ হল একটি স্ট্রিং S বানানো s1 এবং s2-এর ইউনিক অক্ষরগুলো মিলিয়ে, তারপর S- থেকে একটা ক্যারেক্টার মুছে দেখতে হবে যে ফলাফলটি s1 বা s2-এর সমান হয় কিনা।

উদাহরণ

ইনপুট - string S1 = "utter", string S2 = "butter"

আউটপুট - এক ক্যারেক্টার মুছে দুটি স্ট্রিংয়ের যেকোনো একটার সমান হওয়া স্ট্রিংর সংখ্যা: 1

ব্যাখ্যা - S = "butter"। এখান থেকে 'b' মুছে দিলে "utter" হয় যা s1-এর সমান। তাই কাউন্ট ১।

ইনপুট - string S1 = "fat", string S2 = "rat"

আউটপুট - এক ক্যারেক্টার মুছে দুটি স্ট্রিংয়ের যেকোনো একটার সমান হওয়া স্ট্রিংর সংখ্যা: 2

ব্যাখ্যা - S = "frat"। 'r' মুছে দিলে "fat" (s1), 'f' মুছে দিলে "rat" (s2)। তাই কাউন্ট ২।

প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • দুটি স্ট্রিং s1, s2 ডিক্লেয়ার করুন এবং s1-এর সাইজ নিয়ে ফাংশনে পাস করুন।
  • count = 2 (সর্বোচ্চ আউটপুট ২ হতে পারে)।
  • দুটি টেম্পোরারি ভেরিয়েবল start, end লুপ ট্রাভার্সালের জন্য।
  • i=0 থেকে size_S1 পর্যন্ত লুপ: যদি s1[i] != s2[i] হয় তবে start=i এবং ব্রেক।
  • i=size_S1-1 থেকে ০ পর্যন্ত লুপ: যদি s1[i] != s2[i] হয় তবে end=i এবং ব্রেক।
  • যদি end < start হয় তবে count = 26 * (size_S1 + 1) রিটার্ন করুন।
  • অন্যেইফ start == end হয় তবে count রিটার্ন করুন।
  • অন্যথায়:
    • i=start+1 থেকে end পর্যন্ত লুপ: যদি s1[i] != s2[i-1] হয় তবে count-- এবং ব্রেক।
    • i=start+1 থেকে end পর্যন্ত লুপ: যদি s1[i-1] != s2[i] হয় তবে count-- এবং ব্রেক।
  • কাউন্ট রিটার্ন করুন এবং প্রিন্ট করুন।

উদাহরণ কোড

#include <bits/stdc++.h>
using namespace std;

int equal_removal(string S1, string S2, int size_S1) {
    int count = 2;
    int start, end;
    for (int i = 0; i < size_S1; ++i) {
        if (S1[i] != S2[i]) {
            start = i;
            break;
        }
    }
    for (int i = size_S1 - 1; i >= 0; i--) {
        if (S1[i] != S2[i]) {
            end = i;
            break;
        }
    }
    if (end < start) {
        count = 26 * (size_S1 + 1);
        return count;
    } else if (start == end) {
        return count;
    } else {
        for (int i = start + 1; i <= end; i++) {
            if (S1[i] != S2[i - 1]) {
                count--;
                break;
            }
        }
        for (int i = start + 1; i <= end; i++) {
            if (S1[i - 1] != S2[i]) {
                count--;
                break;
            }
        }
        return count;
    }
}

int main() {
    string S1 = "utter";
    string S2 = "butter";
    int size_S1 = S1.length();
    cout << "Count of strings that become equal to one of the two strings after one removal are: " << equal_removal(S1, S2, size_S1);
    return 0;
}

উপরের কোড রান করলে নিচের আউটপুটটি পাওয়া যাবে:

আউটপুট

Count of strings that become equal to one of the two strings after one removal are: 1
  1. C++-এ একটি বিশপ এক মুভে যেসব স্কয়ার ভিজিট করতে পারে সেটির সংখ্যা গণনা

  2. N কাটা দিয়ে বৃত্তের টুকরোর সংখ্যা গণনা C++-এ

  3. সি++-এ দুটি বাইনারি স্ট্রিং যোগ করার প্রোগ্রাম

  4. দুই স্ট্রিং কনক্যাটেনেট (Concatenate) করার C++ প্রোগ্রাম