标签:
字符串、子序列
题目:
给定两个由小写英文字母组成的的字符串 s 和 t ,请返回这两个字符串的最长特殊子序列的长度。
特殊子序列的定义是:某个字符串的某一个子序列(不一定连续),无法在另一个字符串中找到同样的子序列则称为特殊子序列。
如果没有特殊子序列,则输出-1。
数据范围:两个字符串都由小写英文字母组成
示例1
输入:“nowcoder”,“nowcoder”
返回值:-1
示例2
输入:“nowcoder”,“nawcoder”
返回值:8
反思:
这道题目的话,如果读懂了题意就很容易解决,主要搞清楚什么是特殊子序列和最长特殊子序列
- 特殊子序列:某个字符串的某一个子序列(不一定连续),无法在另一个字符串中找到同样的子序列则称为特殊子序列。有可能是1个,也有可能是string.length()个。
- 最长特殊子序列:个数为string.length()个的特殊子序列。
具体步骤
- step 1:判读两个字符串是否相等
- step 2:如果两个字符串相同,必定返回-1
- step 3:如果两个字符串不相同,则返回长度较长的那一个
用到的知识点:
字符串
代码:
public class Solution {
public int longestUniqueSubsequence (String s, String t) {
// write code here
if (!s.equals(t)) {
return s.length() > t.length() ? s.length() : t.length();
}
return -1;
}
}