题目的意思可能表述的不太清楚,这里题目的意思是输出最长的特殊字符串的长度,特殊字符串是指只有字符串本身是自己的子串的字符串。
使用暴力方法枚举比较即可。应该还有更好的改良方法.
class Solution {
public:
int findLUSlength(vector<string>& strs) {
auto issstring = [](string strp, string strm) -> bool{
int pp = 0, pm = 0;
//判断是否是子串的方法:使用两个指针分别指向两个字符串的始端,当所指字符相等则同时向右移动,不一样则只移动模式串的指针。若是子串则最后的指针会遍历整个字符串,即大小等于字符串的长度(指针是从0开始)。
while(pp < strp.size() && pm < strm.size()){
if(strp[pp] == strm[pm]){
pp++;
}
pm++;
}
return (pp == strp.size());
};
//使用两个for循环枚举比较字符串
int temp = -1;
bool flag = 1;
int n = strs.size();
for(int i = 0; i < n; i ++){
flag = 1;
for(int j = 0; j < n ; j ++){
if(i != j && issstring(strs[i], strs[j])){
flag = 0;
break;
}
}
if(flag){
temp = max(temp, static_cast<int>(strs[i].size()));
}
}
return temp;
}
};