. 表示匹配任意一个字符 * 匹配任意多个位于它前面的字符
#include<iostream> #include<string> using namespace std; bool isMatch(string,string); int main(){ string s,p; while(cin>>s>>p) printf("%d\n",isMatch(s,p)); } bool isMatch(string s,string p){ if(p.empty()) return s.empty(); if (p.size()==1) return (s.size()==1&&(s[0]==p[0]||p[0]=='.')); if (p[1]!='*'){ if(s.empty()) return false; return (s[0]==p[0]||p[0]=='.')&&isMatch(s.substr(1),p.substr(1)); } while(!s.empty()&&(s[0]==p[0]||p[0]=='.')){ if (isMatch(s,p.substr(2))) return true; s=s.substr(1); } return isMatch(s, p.substr(2)); }
import java.util.*; import java.util.regex.*; public class Main { public static void main(String[] arg) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { String s=sc.next(); String p=sc.next(); boolean isMatch=Pattern.matches(p,s); if(isMatch){ System.out.println(1); }else { System.out.println(0); } } } }