OJ-0819
题目
示例1
输入
ace
abcde
输出
4
示例2
输入
fgh
abcde
输出
-1
分析
- 初始化指针:从指向S和L的开头的两个指针i 和j 开始。
- 遍历L:遍历L中的每个字符。
- 检查匹配:如果L中当前字符与S中第i个位置的字符匹配,将i指针移动到S中的下一个位置。
- 检查有效性:最终检查i 是否等于S的长度。如果相等,则说明S是L的有效字串,返回S串最后一个有效字符在L中的位置;否则,返回-1表示不是有效字串。
题解
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);String s = in.nextLine();String l = in.nextLine();int i = 0;int index = -1;for (int j = 0; j < l.length(); j++) {if (s.charAt(i) == l.charAt(j)) {i++;index = j;}}if (i == s.length()) {System.out.println(index);} else {System.out.println(-1);}}
}
参考
正则表达式解题
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);String subStr = in.nextLine();String str = in.nextLine();String regStr = subStr.replaceAll("", ".*");Pattern pattern = Pattern.compile(regStr, Pattern.MULTILINE);Matcher matcher = pattern.matcher(str);if (matcher.find()) {int index = matcher.end() - 1;System.out.println(index);} else {System.out.println(-1);}}
}