LeetCode 2825.循环增长使字符串子序列等于另一个字符串
题目:
给你一个下标从 0 开始的字符串 str1
和 str2
。
一次操作中,你选择 str1
中的若干下标。对于选中的每一个下标 i
,你将 str1[i]
循环 递增,变成下一个字符。也就是说 'a'
变成 'b'
,'b'
变成 'c'
,以此类推,'z'
变成 'a'
。
如果执行以上操作 至多一次 ,可以让 str2
成为 str1
的子序列,请你返回 true
,否则返回 false
。
注意:一个字符串的子序列指的是从原字符串中删除一些(可以一个字符也不删)字符后,剩下字符按照原本先后顺序组成的新字符串。
思路:判断子序列 多加一个条件,注意 z + 1 != a
代码:
class Solution {public boolean canMakeSubsequence(String str1, String str2) {int n1 = str1.length();int n2 = str2.length();int j = 0;for (int i = 0; i < n1; i++) {char ch = str1.charAt(i);char nextChar = (ch == 'z') ? 'a' : (char) (ch + 1);if (str2.charAt(j) == ch || str2.charAt(j) == nextChar) {j++;}if (j == n2) {return true;}}return false;}
}
性能:
时间复杂度o(n1 + n2)
空间复杂度o(1)