522. Longest Uncommon Subsequence II 题解

来源:互联网 发布:西瓜影音 mac版本 编辑:程序博客网 时间:2024/05/20 21:47

522. Longest Uncommon Subsequence II  题解


题目描述:

Given a list of strings, you need to find the longest uncommon subsequence among them. The longest uncommon subsequence is defined as the longest subsequence of one of these strings and this subsequence should not be any subsequence of the other strings.

subsequence is a sequence that can be derived from one sequence by deleting some characters without changing the order of the remaining elements. Trivially, any string is a subsequence of itself and an empty string is a subsequence of any string.

The input will be a list of strings, and the output needs to be the length of the longest uncommon subsequence. If the longest uncommon subsequence doesn't exist, return -1.

Example 1:

Input: "aba", "cdc", "eae"Output: 3

Note:

  1. All the given strings' lengths will not exceed 10.
  2. The length of the given list will be in the range of [2, 50].


题目链接:522. Longest Uncommon Subsequence II



算法描述:


          由题意知,给定一个装有多个字符串的容器,我们需要找到其中最长的“非公共子序列”的长度。其中,这里的“子序列”是指:对于一个字符串,去掉这个字符串中任意几个字符,但剩余的字符在这个字符串中相对位置不变的字符串。“非公共子序列”是指某字符串与容器中其它任意字符串都不会构成如上定义的“子序列”关系,即某字符串不是其它字符串的“子序列”。


        我们用双重for循环遍历的方法来做这道题,对于每个字符串,使其与其它字符串相比较,当两个字符串相同时,直接跳过。如果一个字符串不是其它任意一个字符串的“子序列”,那么这个字符串就是一个如上定义的“非公共子序列”,我们记录下它的长度。最后取最长的“非公共子序列”的长度返回。



代码:

class Solution {public:    int findLUSlength(vector<string>& strs) {        int ans = -1;        int j = 0;        for(int i=0; i<strs.size(); ++i){            for(j=0; j<strs.size(); ++j){                if(i == j){                    continue;                }                if(subsequence(strs[i], strs[j])){                    break;                }            }            if(j == strs.size()){                ans = max(ans, (int)strs[i].size());            }        }        return ans;    }        int subsequence(string str1, string str2){        int cnt = 0;        for(char i :str2){            if(i == str1[cnt]){                ++cnt;            }            if(cnt == str1.size()){                break;            }        }        return cnt == str1.size();    }};


原创粉丝点击