ধরুন একটি শব্দ আছে। আমাদের একটি ফাংশন সংজ্ঞায়িত করতে হবে যা একটি শব্দের সাধারণ সংক্ষিপ্ত রূপ তৈরি করতে পারে।
সুতরাং, যদি ইনপুট "শব্দ" এর মত হয়, তাহলে আউটপুট হবে ["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, ]