G面经prepare: Pattern Match
设定一个pattern 把 'internationalization' 变成 'i18n', 比如word是house,pattern可以是h3e, 3se, 5, 1o1s1等,
给pattern和word,判断是否match,
1 package DataStreamAverage; 2 3 public class Solution3 { 4 public boolean check(String s1, String s2) { 5 return helper(s1, 0, s2, 0); 6 } 7 8 public boolean helper(String s1, int i1, String s2, int i2) { 9 if (i1==s1.length() && i2==s2.length()) return true; 10 if (i1==s1.length() || i2==s2.length()) return false; 11 if (isDigit(s2.charAt(i2))) { 12 int num = 0; 13 while (i2<s2.length() && isDigit(s2.charAt(i2))) { 14 num = num*10 + (int)(s2.charAt(i2)-'0'); 15 i2++; 16 } 17 if (i1+num > s1.length()) return false; 18 return helper(s1, i1+num, s2, i2); 19 } 20 else { 21 if (s1.charAt(i1) != s2.charAt(i2)) return false; 22 return helper(s1, i1+1, s2, i2+1); 23 } 24 } 25 26 public boolean isDigit(char c) { 27 if (c>='0' && c<='9') return true; 28 else return false; 29 } 30 31 32 /** 33 * @param args 34 */ 35 public static void main(String[] args) { 36 // TODO Auto-generated method stub 37 Solution3 sol = new Solution3(); 38 boolean res = sol.check("houskjfjjdkse", "h11e"); 39 if (res) System.out.println("True"); 40 else System.out.println("false"); 41 } 42 43 }