递归:
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @param pattern string字符串 * @return bool布尔型 */ public boolean match (String str, String pattern) { // write code here if(str==null||pattern==null){ return false; } return matchCore(str.toCharArray(),pattern.toCharArray(),0,0); } private static boolean matchCore(char[] str,char[] pattern,int i,int j){ //如果模式先遍历完,则一定不匹配;如果同时遍历完,则一定匹配 if(j==pattern.length){ return i==str.length; } //注意防止数组索引OutOfBounds; if(j<pattern.length-1&&pattern[j+1]=='*'){ if(i<str.length&&(str[i]==pattern[j]||pattern[j]=='.')){ return matchCore(str,pattern,i,j+2)||matchCore(str,pattern,i+1,j); }else{ return matchCore(str,pattern,i,j+2); } } if(str.length!=i&&(str[i]==pattern[j]||pattern[j]=='.')){ return matchCore(str,pattern,i+1,j+1); } return false; } }
简便方法:
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @param pattern string字符串 * @return bool布尔型 */ public boolean match (String str, String pattern) { // write code here return str.matches(pattern); } }
剑指Offer(五十三):表示数值的字符串