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

C++-এ শিফটিং লেটার্স সমস্যা সমাধান

মান করুন আমাদের একটি ছোট হাতের অক্ষরের স্ট্রিং S এবং একটি পূর্ণসংখ্যা অ্যারে shifts দেওয়া আছে। একটি অক্ষর শিফট করার মানে বর্ণমালায় পরের অক্ষরে যাওয়া, z-এর জন্য হবে a। এখন প্রতিটি shifts[i] = x এর জন্য, আমরা S-র প্রথম i+1টি অক্ষরকে x বার শিফট করতে চাই। সমস্ত শিফট প্রয়োগ করার পর চূড়ান্ত স্ট্রিং খুঁজে বের করতে হবে।

যদি স্ট্রিং হয় "abc" এবং shifts = [3,5,9], তবে প্রথম ১টি অক্ষর ৩ বার শিফট করলে হবে "dbc", প্রথম ২টি অক্ষর ৫ বার শিফট করলে হবে "igc", এবং প্রথম ৩টি অক্ষর ৯ বার শিফট করলে হবে "rpl", যা চূড়ান্ত উত্তর।

এটি সমাধান করার জন্য নিচের ধাপগুলি অনুসরণ করুন −

  • i = shifts.size() - 2 থেকে 0 পর্যন্ত
    • shift[i] := shift[i] + shift[i + 1]
    • shift[i] := shift[i] mod 26
  • i = 0 থেকে S.size() - 1 পর্যন্ত
    • S[i] := ((S[i] - ASCII of a) + shifts[i] mod 26) + ASCII of a
  • S ফেরত দিন

উদাহরণ কোড

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

class Solution {
public:
    string shiftingLetters(string S, vector<int>& shifts) {
        for(int i = shifts.size() - 2; i >= 0; i--){
            shifts[i] += shifts[i + 1];
            shifts[i] %= 26;
        }
        for(int i = 0; i < S.size(); i++) {
            S[i] = ( ((S[i] - 'a') + shifts[i]) % 26 + 'a');
        }
        return S;
    }
};

main(){
    vector<int> v = {3,5,9};
    Solution ob;
    cout << (ob.shiftingLetters("abc", v));
}

ইনপুট

"abc" [3,5,9]

আউটপুট

rpl
  1. C++-এ reference_wrapper

  2. C++-এ এনক্যাপসুলেশন

  3. C++-এ আইডেন্টিফায়ার (Identifiers)

  4. লিনাক্সে C++-এর জন্য সেরা IDE কী?