問題描述
給定一個字符串和一個字符串字典,找到字典裏面最長的字符串,該字符串可以通過刪除給定字符串的某些字符來得到。如果答案不止一個,返回長度最長且字典順序最小的字符串。如果答案不存在,則返回空字符串。
示例 1:
輸入:
s = “abpcplea”, d = [“ale”,“apple”,“monkey”,“plea”]
輸出:
“apple”
解題報告
很明顯是雙指針法。遍歷 d
中的每一個字符串 d[i]
,將其與 s
進行比較。指針 p 指 向s的頭部,指針q指向 d[i] 的頭部。
實現代碼
class Solution {
public:
string findLongestWord(string s, vector<string>& d) {
string ans="";
int p=0,q=0,maxLen=INT_MIN,size;
for(int i=0;i<d.size();i++){
p=0;
q=0;
size=d[i].size();
if(size<maxLen||(size==maxLen&&ans.compare(d[i])<0)) continue;
while(p<s.size()&&q<d[i].size()){
if(s[p]==d[i][q]) q++;
p++;
}
if(q==size){
ans=d[i];
maxLen=d[i].size();
}
}
return ans;
}
};