একটি ডিকশনারি (dictionary) এবং একটি স্ট্রিং s দেওয়া থাকলে, ডিকশনারিতে সবচেয়ে বড় সেই স্ট্রিং খুঁজে বের করতে হবে যা s-এর কিছু ক্যারেক্টার ডিলিট করে তৈরি করা যায়। s = "apbreoigroakml" হলে, ডিকশনারি {"prog", "ram", "program"} থাকলে ফলাফল "program"।
সমাধান: সব ডিকশনারি শব্দ ঘুরে, প্রতিটি শব্দের জন্য যাচাই করা হবে কি সেটি দেওয়া স্ট্রিং-এর সাবসিকোয়েন্স (subsequence) এবং সবচেয়ে লম্বা। সবচেয়ে লম্বা সাবসিকোয়েন্স 가진 শব্দটি রিটার্ন করা।
উদাহরণ
#include<iostream> #include<vector> using namespace std; bool isSubSequence(string s1, string s2) { int m = s1.length(), n = s2.length(); int j = 0; for (int i=0; i dict, string s) { string result = ""; int length = 0; for (string word : dict) { if (length < word.length() && isSubSequence(word, s)) { result = word; length = word.length(); } } return result; } int main() { vector dict = {"prog", "ram", "program"}; string str = "apbreoigroakml" ; cout << getLongestSubstr(dict, str) << endl; } আউটপুট
program