মান করুন আমাদের একটি স্ট্রিং S দেওয়া আছে, আমরা কিছু রিপ্লেসমেন্ট অপারেশন করব যা অক্ষর গোষ্ঠীকে নতুন দিতে পারবে। প্রতিটি রিপ্লেসমেন্ট অপারেশনে ৩টি প্যারামিটার থাকে − একটি শুরুতে ইনডেক্স i, একটি সোর্স ওয়ার্ড x এবং একটি টার্গেট ওয়ার্ড y। নিয়ম হল যদি x মূল স্ট্রিং S-এ পজিশন i-এ শুরু হয়, তবে আমরা x-এর ঘটনাটিকে y-দ্বারা রিপ্লেস করব। অন্যথায়, কিছু করব না।
উদাহরণস্বরূপ, যদি S = "abcd" এবং রিপ্লেসমেন্ট অপারেশন i = 2, x = "cd", y = "ffff" হয়, তবে যেহেতু "cd" মূল স্ট্রিং S-এ পজিশন 2-এ শুরু হয়, আমাদের এটিকে "ffff" দিয়ে রিপ্লেস করতে হবে।
আরেকটি উদাহরণ S = "abcd" জন্য, যদি দুটি রিপ্লেসমেন্ট অপারেশন থাকে: i = 0, x = "ab", y = "eee" এবং i = 2, x = "ec", y = "ffff", তবে দ্বিতীয় অপারেশন কিছু করবে না কারণ মূল স্ট্রিং-এ S[2] = 'c', যা x[0] = 'e'-এর সাথে মেলে না।
যদি আমাদের স্ট্রিং S = "abcd", ইনডেক্স = [0,2], সোর্স = ["a", "cd"], এবং টার্গেট = ["eee", "ffff"] হয়, তবে আউটপুট হবে "eeebffff"। কারণ "a" পজিশন 0-এ শুরু হয়, তাই "eee" দিয়ে রিপ্লেস। "cd" পজিশন 2-এ শুরু হয়, তাই "ffff" দিয়ে রিপ্লেস।
এটি সমাধান করার জন্য নিচের ধাপগুলি অনুসরণ করুন −
- একটি পেয়ারের অ্যারে সংজ্ঞায়িত করুন,
sortedনামে,n := indexesঅ্যারের আকার i = 0থেকেn - 1পর্যন্ত(indexes[i], i)পেয়ারsorted-এ ইনসার্ট করুন
sorted-কে রিভার্স অর্ডারে সর্ট করুনj = 0থেকেn - 1পর্যন্তi := sorted[j]-র প্রথম মানsrc := sources[sorted[j].second]target := targets[sorted[j].second]- যদি
S-র সাবস্ট্রিং ইনডেক্সiথেকে সোর্সের আকার - ১ পর্যন্ত সোর্সের সাথে মিলে, তবেS := S[0..i-1] + target + S[i + source.size()..]
Sফেরত দিন
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
string findReplaceString(string S, vector<int>& indexes, vector<string>& sources,
vector<string>& targets) {
vector < pair <int, int> > sorted;
int n = indexes.size();
for(int i = 0; i < n; i++){
sorted.push_back({indexes[i], i});
}
sort(sorted.rbegin(), sorted.rend());
for(int j = 0; j < n; j++){
int i = sorted[j].first;
string source = sources[sorted[j].second];
string target = targets[sorted[j].second];
if(S.substr(i, source.size()) == source){
S = S.substr(0, i) + target + S.substr(i + source.size());
}
}
return S;
}
};
main(){
vector<int> v1 = {0, 2};
vector<string> v2 = {"a", "cd"};
vector<string> v3 = {"eee", "ffff"};
Solution ob;
cout << (ob.findReplaceString("abcd", v1, v2, v3));
}
ইনপুট
"abcd" [0, 2] ["a", "cd"] ["eee", "ffff"]
আউটপুট
eeebffff