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

C++-এ একটি স্ট্রিংয়ের সকল সাবস্ট্রিংয়ে স্বরবর্ণের সংখ্যা গণনা


একটি স্ট্রিং str দেওয়া আছে যাতে ইংরেজি অক্ষর আছে। লক্ষ্য হলো str-এর সকল সাবস্ট্রিংয়ে মোট কতটি স্বরবর্ণ (vowel) আছে সেটি বের করা। যদি স্ট্রিংটি "abcde" হয়, তবে সাবস্ট্রিংগুলো হবে: "a", "b", "c", "d", "e", "ab", "bc", "cd", "de", "abc", "bcd", "cde", "abcd", "bcde", "abcde"। এই সাবস্ট্রিংগুলিতে স্বরবর্ণের মোট সংখ্যা ১০ (a এবং e)।

উদাহরণ ১

ইনপুট

str = "aloe"

আউটপুট

স্ট্রিংয়ের সকল সাবস্ট্রিংয়ে স্বরবর্ণের সংখ্যা: 14

ব্যাখ্যা

সাবস্ট্রিংগুলো: "a", "l", "o", "e", "al", "lo", "oe", "alo", "loe", "aloe"। এগুলোর মোট স্বরবর্ণ: ১৪

উদাহরণ ২

ইনপুট

str="http"

আউটপুট

স্ট্রিংয়ের সকল সাবস্ট্রিংয়ে স্বরবর্ণের সংখ্যা: 0

ব্যাখ্যা

সাবস্ট্রিংগুলো: "h", "t", "t", "p", "ht", "tt", "tp", "htt", "ttp", "http"। এগুলোর মোট স্বরবর্ণ: ০

প্রয়োগ করা পদ্ধতি

এই পদ্ধতিতে একটি ভেক্টর vec তৈরি করা হয় যেটি vec[i]-এ i-তম ক্যারেক্টারের সকল সাবস্ট্রিংয়ে থাকার সংখ্যা রাখে।

০তম ক্যারেক্টার n টি সাবস্ট্রিংয়ে থাকে যেখানে n হলো স্ট্রিং str-এর দৈর্ঘ্য।

i-তম ক্যারেক্টার সকল সাবস্ট্রিংয়ে থাকে যাতে সেটি থাকে (n-i) + যেসব সাবস্ট্রিংয়ে i-তম ক্যারেক্টারসহ আগের ক্যারেক্টারও থাকে (arr[i-1]) - যেসব সাবস্ট্রিং শুধু আগের ক্যারেক্টারগুলো দিয়ে তৈরি (i)।

  • ইনপুট হিসেবে স্ট্রিং str নিন।

  • substring_vowels_count(string str, int length) ফাংশনটি স্বরবর্ণের মোট সংখ্যা রিটার্ন করে।

  • আরম্ভিক কাউন্ট ০ রাখুন।

  • ইন্টিজার ভেক্টর vec নিন।

  • for লুপ দিয়ে i=0 থেকে i পর্যন্ত vec পূরণ করুন প্রতিটি পজিশনের ক্যারেক্টারের সাবস্ট্রিংয়ে থাকার কাউন্ট দিয়ে।

  • যদি i=0, ০তম ক্যারেক্টারের জন্য কাউন্ট হলো length। vec[0]=length push_back দিয়ে সেট করুন।

  • বাকি ক্যারেক্টারগুলো için push_back(temp_1 + temp_2) ব্যবহার করুন যেখানে temp_1=length-i এবং temp_2=vec[i-1]-i।

  • এখন আবার for লুপ দিয়ে str ট্রুভার্স করুন এবং প্রতিটি str[i] স্বরবর্ণ হলে (a, e, i, o, u), vec[i] কাউন্টে যোগ করুন।

  • শেষে সাবস্ট্রিংয়ে স্বরবর্ণের মোট সংখ্যা count-এ থাকবে।

  • count রিটার্ন করুন ফলাফল হিসেবে।

উদাহরণ কোড

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

int substring_vowels_count(string str, int length) {
    int count = 0; 
    vector<int> vec; 
    
    for (int i = 0; i < length; i++) {
        if (i == 0) {
            vec.push_back(length); 
        } else {
            int temp_1 = length - i; 
            int temp_2 = vec[i - 1] - i; 
            vec.push_back(temp_1 + temp_2); 
        } 
    } 
    
    for (int i = 0; i < length; i++) {
        if(str[i] == 'a' || str[i] == 'i' || str[i] == 'e' || str[i] == 'o' || str[i] == 'u') {
            count = count + vec[i]; 
        } 
    } 
    
    return count; 
} 

int main() { 
    string str = "honesty"; 
    int length = str.length(); 
    cout << "স্ট্রিংয়ের সকল সাবস্ট্রিংয়ে স্বরবর্ণের সংখ্যা: " << substring_vowels_count(str, length); 
    return 0; 
}

আউটপুট

উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি আসবে:

স্ট্রিংয়ের সকল সাবস্ট্রিংয়ে স্বরবর্ণের সংখ্যা: 28

  1. সি++ কোড: সংখ্যাসূচক স্ট্রিংয়ের জোড় সাবস্ট্রিং গণনা করুন

  2. C++ দিয়ে একটি স্ট্রিংয়ের সাবস্ট্রিং-এর সংখ্যা বের করা

  3. পাইথন প্রোগ্রাম সেট ব্যবহার করে স্ট্রিংয়ে ভাওয়েল কাউন্ট করা

  4. পাইথন প্রোগ্রাম: সেট ব্যবহার করে স্ট্রিং-এ স্বরবর্ণ গণনা (Duplicate)