ধরুন একটি শব্দ আছে। আমাদের একটি ফাংশন সংজ্ঞায়িত করতে হবে যা একটি শব্দের সাধারণ সংক্ষিপ্ত রূপ তৈরি করতে পারে।
সুতরাং, যদি ইনপুট "শব্দ" এর মত হয়, তাহলে আউটপুট হবে ["word", "1ord", "w1rd", "wo1d", "wor1", "2rd", "w2d", "wo2", " 1o1d", "1or1", "w1r1", "1o2", "2r1", "3d", "w3", "4"]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি অ্যারে ret সংজ্ঞায়িত করুন
-
একটি ফাংশন সল্ভ(), এটি s, idx,
লাগবে -
যদি idx>=s এর আকার হয়, তাহলে −
-
ret এর শেষে s ঢোকান
-
ফেরত
-
-
y :=সূচক 0 থেকে idx - 1
পর্যন্ত s এর সাবস্ট্রিং -
i :=y
এর আকার -
num :=ফাঁকা স্ট্রিং
-
যখন (i>=0 এবং y[i] <='9' এর ASCII এবং y[i]>='0' এর ASCII), করুন −
-
সংখ্যা :=y[i] + সংখ্যা
-
(i 1 দ্বারা কমান)
-
-
যদি i y এর আকারের সমান না হয়, তাহলে −
-
ret :=সূচী থেকে s এর সাবস্ট্রিং (0 থেকে idx - (y - 1 - i এর আকার) - 1) সূচী থেকে s এর স্ট্রিং কনক্যাটেনেট সাবস্ট্রিং হিসাবে (0 থেকে idx)
-
s1 :=num + 1 স্ট্রিং হিসাবে
-
s2 :=স্ট্রিং হিসাবে সংখ্যা
-
যদি s1 এর আকার s2 এর আকারের সমান হয়, তাহলে −
-
অন্যথায়
-
সমাধান করুন(ret, idx + 1)
-
-
-
অন্যথায়
-
পূর্ববর্তী :=s[idx]
-
s[idx] :='1'
-
সমাধান (s, idx + 1)
-
s[idx] :=আগের
-
-
সমাধান (s, idx + 1)
-
প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -
-
সমাধান (শব্দ, 0)
-
রিটার্ন রিটার্ন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto< v){
cout << "[";
for(int i = 0; i<v.size(); i++){
cout << v[i] << ", ";
}
cout << "]"<<endl;
}
class Solution {
public:
vector<string> ret;
void solve(string s, int idx){
if (idx >= s.size()) {
ret.push_back(s);
return;
}
string y = s.substr(0, idx);
int i = y.size() - 1;
string num = "";
while (i >= 0 && y[i] <= '9' && y[i] >= '0') {
num = y[i] + num;
i--;
}
if (i != y.size() - 1) {
string ret = s.substr(0, idx - (y.size() - 1 - i)) + to_string(stoi(num) + 1) + s.substr(idx + 1);
string s1 = to_string(stoi(num) + 1);
string s2 = to_string(stoi(num));
if (s1.size() == s2.size())
solve(ret, idx);
else
solve(ret, idx + 1);
}
else {
char prev = s[idx];
s[idx] = '1';
solve(s, idx + 1);
s[idx] = prev;
}
solve(s, idx + 1);
}
vector<string< generateAbbreviations(string word){
solve(word, 0);
return ret;
}
};
main(){
Solution ob;
print_vector(ob.generateAbbreviations("hello"));
} ইনপুট
hello
আউটপুট
[5, 4o, 3l1, 3lo, 2l2, 2l1o, 2ll1, 2llo, 1e3, 1e2o, 1e1l1, 1e1lo, 1el2, 1el1o, 1ell1, 1ello, h4, h3o, h2l1, h2lo, h1l2, h1l1o, h1ll1, h1llo, he3, he2o, he1l1, he1lo, hel2, hel1o, hell1, hello, ]