public static boolean matches(String s,String p) {
    	int m=s.length(), n=p.length();
    	int i=0, j=0;
    	while (i<m&&j<n) {
    		if (Character.isDigit(p.charAt(j))) {
    			int k=j+1;
    			int v=p.charAt(j)-'0';
    			while(k<n&&Character.isDigit(p.charAt(k)))
    				v=v*10+p.charAt(k++)-'0';
    			j=k;
    			i+=v;
    		} else {
    			if (s.charAt(i)!=p.charAt(j))
    				break;
    			++i;
    			++j;
    		}
    	}
    	return i==m&&j==n;
    }