ধরুন আমাদের কাছে ছোট হাতের অক্ষরের একটি স্ট্রিং S আছে এবং একটি পূর্ণসংখ্যা অ্যারে স্থানান্তরিত হয়। একটি বর্ণের স্থানান্তর মানে বর্ণমালার পরবর্তী অক্ষর, z এর জন্য, এটি হবে a। এখন প্রতিটি শিফটের জন্য [i] =x, আমরা S, x এর প্রথম i+1 অক্ষরগুলিকে স্থানান্তর করতে চাই। S-তে এই ধরনের সমস্ত পরিবর্তন প্রয়োগ করার পরে আমাদের চূড়ান্ত স্ট্রিংটি খুঁজে বের করতে হবে। সুতরাং যদি স্ট্রিংটি হয় “abc” এবং shifts =[3,5,9], তাহলে S-এর প্রথম 1টি অক্ষর 3 দ্বারা স্থানান্তরিত করার পরে, "dbc" হবে, S-এর প্রথম দুটি অক্ষর 5 দ্বারা স্থানান্তরিত করার পর, আমাদের কাছে "igc" থাকবে। ", এবং S-এর প্রথম 3টি অক্ষর 9 দ্বারা স্থানান্তরিত করে, আমাদের কাছে "rpl" আছে, এবং এটি হল উত্তর৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- আমি শিফট অ্যারের রেঞ্জ সাইজের জন্য – 2 থেকে 0
- নিচে
- shift[i] :=shift[i] + shift[i + 1]
- shift[i] :=shift[i] mod 26
- আমার জন্য 0 থেকে S – 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