给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。
示例 1:
输入:
s = “abpcplea”, d = [“ale”,“apple”,“monkey”,“plea”]
输出:
“apple”
示例 2:
输入:
s = “abpcplea”, d = [“a”,“b”,“c”]
输出:
“a”
说明:
所有输入的字符串只包含小写字母。
字典的大小不会超过 1000。
所有输入的字符串长度不会超过 1000。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-word-in-dictionary-through-deleting
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
c++
class Solution {
public:
string findLongestWord(string s, vector<string>& d) {
string longeststring = "";
for(string member:d){
unsigned int i=0,j=0;
if(longeststring.length()<member.length()||(longeststring.length()==member.length()&&longeststring.compare(member)>0)){
while(i<s.length()&&j<member.length()){
if(s[i]==member[j]){
j++;
}
i++;
}
if(j==member.length()){
longeststring=member;
}
}
}
return longeststring;
}
};
c语言
char * findLongestWord(char * s, char ** d, int dSize){
char* longeststring = "";
int longstrnow = -1;
for(int k=0;k<dSize;k++){
int i=0,j=0;
char* p = d[k];
while(s[j]!='\0'&&p[i]!='\0'){
if(s[j]==p[i]){
i++;
}
j++;
}
if(p[i]=='\0'){
if(i>longstrnow){
longstrnow=i;
longeststring=p;
}else if(i==longstrnow){
if(strcmp(p,longeststring)<0){
longeststring = p;
}
}
}
}
return longeststring;
}