小白学习中。
原题:
给你一个下标从 0 开始的字符串 str1
和 str2
。
一次操作中,你选择 str1
中的若干下标。对于选中的每一个下标 i
,你将 str1[i]
循环 递增,变成下一个字符。也就是说 'a'
变成 'b'
,'b'
变成 'c'
,以此类推,'z'
变成 'a'
。
如果执行以上操作 至多一次 ,可以让 str2
成为 str1
的子序列,请你返回 true
,否则返回 false
。
注意:一个字符串的子序列指的是从原字符串中删除一些(可以一个字符也不删)字符后,剩下字符按照原本先后顺序组成的新字符串。
注意点:
1.操作至多执行一次,所以最多只进行一次的比较:
str1.charAt(i) +1 == str2.charAt(t)
2.'z'
变成 'a'
(str1.charAt(i)=='z' && str2.charAt(t)=='a')
字符串下标用chartAt()
public class STR {
public boolean canMakeSubsequence(String str1, String str2) {
int n = str1.length();
int m = str2.length();
int t = 0;
for(int i=0;i<n &&t<m ;i++){
if (str1.charAt(i) == str2.charAt(t) || str1.charAt(i) +1 == str2.charAt(t)|| (str1.charAt(i)=='z' && str2.charAt(t)=='a')){
t++;
}
}
return t == m;
}
public static void main(String[] args) {
STR str = new STR();
String str1 = "ffbczn";
String str2 = "gba";
System.out.println(str.canMakeSubsequence(str1,str2));
}
}