题解 | #字符串匹配# Java实现
字符串匹配
https://www.nowcoder.com/practice/fbdc522ef958455687654b38a4ca01e0
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextInt()) { // 注意 while 处理多个 case int n = in.nextInt(); in.nextLine(); String[] strings = new String[n]; for(int i = 0;i < n;i++){ strings[i] = in.nextLine(); } String targetString = in.nextLine(); func(strings,targetString); } } public static void func(String[] strings,String targetString){ // System.out.println("targetString = "+targetString); String ts = targetString.toLowerCase(); for(int i = 0;i < strings.length;i++){ String s = strings[i].toLowerCase(); int index = 0,pos = 0; while(index < s.length() && pos < ts.length()){ // 匹配的话,同时往前加一 if(ts.charAt(pos) == s.charAt(index)){ pos++; index++; } else if(ts.charAt(pos) == '['){ int tIndex = ts.indexOf(']',pos); for(int j = pos;j < tIndex;j++){ if(ts.charAt(j) == s.charAt(index)){ index++; // 当在[]内找到匹配的字符时,pos移动到]的下一位 // 在这里卡了半天,o(╥﹏╥)o pos = tIndex+1; break; }else{ pos = j; } } } else{ break; } if(index == s.length() && pos == ts.length()){ System.out.printf("%d %s\n",(i+1),strings[i]); } } } } }