Untitled
unknown
plain_text
10 months ago
1.5 kB
7
Indexable
public class SubsequenceWithOneOperation {
public static boolean canMakeSubsequence(String str1, String str2) {
int n = str1.length(), m = str2.length();
int i = 0, j = 0;
boolean operationUsed = false;
while (i < n && j < m) {
if (str1.charAt(i) == str2.charAt(j)) {
// If characters match directly, move both pointers
i++;
j++;
} else {
// If they don't match, we try using the operation
if (!operationUsed && canIncrementTo(str1.charAt(i), str2.charAt(j))) {
operationUsed = true;
i++;
j++;
} else {
i++;
}
}
}
// If we've matched all characters of str2, return true
return j == m;
}
// Check if str1_char can be incremented to match str2_char
private static boolean canIncrementTo(char str1_char, char str2_char) {
return (str2_char - str1_char + 26) % 26 != 0;
}
public static void main(String[] args) {
String str1 = "abc", str2 = "ad";
System.out.println(canMakeSubsequence(str1, str2)); // true
String str1_2 = "zc", str2_2 = "ad";
System.out.println(canMakeSubsequence(str1_2, str2_2)); // true
String str1_3 = "ab", str2_3 = "d";
System.out.println(canMakeSubsequence(str1_3, str2_3)); // false
}
}
Editor is loading...
Leave a Comment