您的位置:首页 > 其它

G面经prepare: Pattern Match

2016-01-20 07:06 447 查看
设定一个pattern 把 'internationalization' 变成 'i18n', 比如word是house,pattern可以是h3e, 3se, 5, 1o1s1等,
给pattern和word,判断是否match,


package DataStreamAverage;

public class Solution3 {
public boolean check(String s1, String s2) {
return helper(s1, 0, s2, 0);
}

public boolean helper(String s1, int i1, String s2, int i2) {
if (i1==s1.length() && i2==s2.length()) return true;
if (i1==s1.length() || i2==s2.length()) return false;
if (isDigit(s2.charAt(i2))) {
int num = 0;
while (i2<s2.length() && isDigit(s2.charAt(i2))) {
num = num*10 + (int)(s2.charAt(i2)-'0');
i2++;
}
if (i1+num > s1.length()) return false;
return helper(s1, i1+num, s2, i2);
}
else {
if (s1.charAt(i1) != s2.charAt(i2)) return false;
return helper(s1, i1+1, s2, i2+1);
}
}

public boolean isDigit(char c) {
if (c>='0' && c<='9') return true;
else return false;
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution3 sol = new Solution3();
boolean res = sol.check("houskjfjjdkse", "h11e");
if (res) System.out.println("True");
else System.out.println("false");
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: