递归:
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(五十三):表示数值的字符串
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @return bool布尔型 */ int index; public boolean isNumeric (String str) { // write code here if(str==null|| str.length()==0){ return false; } char[] cs=str.toCharArray(); //判断小数前位置 index=0; boolean flag=scanInteger(cs); //判断小数后位置 if(index<cs.length&&cs[index]=='.'){ index++; flag=scanUnInteger(cs)||flag; } //判断E,e之类 if(index<cs.length&&(cs[index]=='E'||cs[index]=='e')){ index++; flag=flag&&scanInteger(cs); } return flag &&index>=cs.length ; } public boolean scanInteger(char[] cs){ if(index<cs.length&&(cs[index]=='-'||cs[index]=='+')){ index++; } return scanUnInteger(cs); } public boolean scanUnInteger(char[] cs){ int temp=index; while(index<cs.length&&cs[index]>='0'&&cs[index]<='9'){ index++; } return index>temp; } }