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

C++ স্ট্রিংকে সর্টেড অর্ডারে রি-অ্যারেঞ্জ করুন এবং ইন্টিজার সম যোগ করুন


একটি স্ট্রিং অ্যালফাবেটকে সর্টেড অর্ডারে রি-অ্যারেঞ্জ করা এবং স্ট্রিংয়ে থাকা সব ইন্টিজার যোগ করার সমস্যা আলোচনা করব। উদাহরণস্বরূপ:

Input : str = "adv4fc3" Output : " acdfv7" Explanation: সব লেটারগুলো সর্ট হয়ে "acdfv" হয়েছে এবং ইন্টিজার 4 এবং 3-এর যোগফল পেছনে জোড়া হয়েছে। Input: str = " h2d7e3f " Output: " defh12" Explanation: সব লেটারগুলো সর্ট হয়ে "defh" হয়েছে এবং ইন্টিজার 2, 7, এবং 3-এর যোগফল পেছনে জোড়া হয়েছে।

সমাধানের পদ্ধতি

এই সমস্যায় আমাদের দুটি কাজ করতে হবে: একটি হলো স্ট্রিং সর্ট করা, এবং অন্যটি হলো ইন্টিজার ভ্যালুগুলো যোগ করা।

  • স্ট্রিং সর্ট করা হয় স্ট্রিংয়ে থাকা প্রতিটি লেটারের কাউন্ট রাখে এবং তাদের কাউন্ট অনুযায়ী একটি নতুন স্ট্রিং ফর্ম করে।

  • ইন্টিজার যোগ করা হয় প্রতিবার ইন্টিজার আসলে একটি ভেরিয়েবলে যোগ করে।

উদাহরণ

উপরোক্ত পদ্ধতির জন্য C++ কোড

#include<bits/stdc++.h> using namespace std; const int MAX_CHAR = 26; int main(){     string str = "h2d7e3f";         int ch[26] = {0};     int count = 0;     // স্ট্রিংয়ের সব ক্যারেক্টার ট্রাভার্স করুন।     for (int i = 0; i < str.length(); i++){         // প্রতিটি ক্যারেক্টারএর অকুরেন্স (occurrence) কাউন্ট রাখুন।         if (str[i]>='a' && str[i] <='z')             ch[str[i] - 97] = ch[str[i] - 97] + 1;         // যদি ইন্টিজার এনকাউন্টার হয়।         else             count = count + (str[i]-'0');     }     string final = "";     // ch অ্যারে সাহায্যে সর্টেড স্ট্রিং তৈরি করুন।     for (int i = 0; i < 26; i++){         char a = (char)('a'+i);         // বর্তমান ক্যারেক্টারকে নতুন স্ট্রিংয়ে         // এর কাউন্ট শেষ না হওয়া পর্যন্ত ইনসার্ট করুন         while (ch[i]-- != 0)             final = final + a;     }    // এবং চূড়ান্তে স্ট্রিংয়ের সাথে সব ইন্টিজার যোগফল জোড়া করুন।     if (count>0)         final = final + to_string(count);     cout << "Rearranged string: " << final;     return 0; }

আউটপুট

Rearranged string: defh12

উপরোক্ত কোডের ব্যাখ্যা

  • ch অ্যারে ২৬ সাইজের ইনিশিয়ালাইজ করা হয়েছে কারণ ২৬টি অ্যালফাবেটের অকুরেন্স কাউন্ট রাখতে হবে।

  • প্রথম লুপে, আমরা স্ট্রিং ট্রাভার্স করছি। প্রতিটি অ্যালফাবেটের জন্য, সেটির কাউন্ট ইনক্রিমেন্ট করছি। প্রতিটি ইন্টিজারের জন্য, কাউন্ট ভেরিয়েবলে যোগ করছি।

  • দ্বিতীয় লুপে, আমরা সব কাউন্ট থেকে একটি নতুন সর্টেড স্ট্রিং ফর্ম করছি যেখানে আমরা ক্যারেক্টারকে তাদের কাউন্ট অনুযায়ী স্ট্রিংয়ে অ্যাপেন্ড (append) করছি।

  • এবং চূড়ান্তে আমরা প্রথম লুপ থেকে গণনা করা ইন্টিজার সমকে স্ট্রিংয়ের সাথে অ্যাপেন্ড করছি।

উপসংহার

এই টিউটোরিয়ালে, আমরা একটি স্ট্রিংকে সর্টেড অর্ডারে সাজানোর কথা আলোচনা করেছি এবং হ্যাশ টেবিল পদ্ধতি থেকে একটি সমস্যা সমাধান করেছি। আমরা এই সমস্যার জন্য C++ কোডও আলোচনা করেছি। আমরা যেকোনো প্রোগ্রামিং ভাষায় C, Java, Python ইত্যাদি এই কোডটি লিখতে পারি। আশা করি আপনি এই টিউটোরিয়ালটিকে উপকারী পাবেন।


  1. স্ট্রিং ডিসেন্ডিং অর্ডারে সর্টিং C++-তে

  2. অ্যালফাবেটিক্যাল অর্ডারে সাবস্ট্রিং গণনা করা (C++)

  3. C++-এ অ্যারে সমানভাবে ভাগ করার জন্য মিনিমাম পজিটিভ ইন্টিজার

  4. C++-এ অন্য স্ট্রিংয়ের অ্যালফাবেটিক্যাল অর্ডার অনুযায়ী স্ট্রিং অ্যারে সর্ট করা