參考:https://www.cnblogs.com/sasuke-/p/5396843.htmlhtml
https://blog.csdn.net/someone_and_anyone/article/details/81044153ios
https://blog.csdn.net/someone_and_anyone/article/details/81044153app
https://blog.csdn.net/someone_and_anyone/article/details/81044153ide
最長子序列(leetcode 524)spa
用每一個字符串同當前字符串進行匹配,看當前字符串是不是要匹配字符串的子串。.net
對全部字符串先排字典序,而後依次同要匹配的字符串匹配。code
#include <iostream> #include <vector> #include <algorithm> using namespace std; class Solution { public: string findLongestWord(string s, vector<string>& d) { sort(d.begin(), d.end()); int s_len = s.length(); string tmp = ""; int len_now = -1; for(auto it=d.begin(); it!=d.end(); it++) { int i_len = (*it).length(); if(s_len < i_len && i_len < len_now) { continue; } if(isValid(s, (*it)) && i_len > len_now) { tmp = (*it); len_now = i_len; } } return tmp; } bool isValid(string& s1, string& s2) { int len1 = s1.length(), len2 = s2.length(); int i=0,j=0; for(; i<len1 && j < len2;) { if(s1.at(i) == s2.at(j)) { j++; } i++; } return j == len2; } }; int main() { Solution sol; vector<string> s_v = {"ale","apple","monkey","plea"}; string s1 = "abpcplea"; string res = sol.findLongestWord(s1, s_v); cout << res << endl; return 0; }