剑指offer 字符串专题 刷题记录(3)

简介: 剑指offer 字符串专题 刷题记录(3)

递归:


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(五十三):表示数值的字符串


image.png


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;
    }
}
目录
相关文章
|
1月前
|
算法 索引
OJ刷题日记:5、二分查找(1)
OJ刷题日记:5、二分查找(1)
25 0
|
1月前
|
算法 测试技术
OJ刷题日记:1、双指针(1)
OJ刷题日记:1、双指针(1)
22 0
|
1月前
牛客网刷题记录
牛客网刷题记录
17 0
|
算法
算法竞赛题解(做题记录):一尺之棰
算法竞赛题解:一尺之棰
160 0
|
存储
【刷题记录】18. 四数之和
【刷题记录】18. 四数之和
96 0
【刷题记录】18. 四数之和
剑指offer 字符串专题 刷题记录(1)
剑指offer 字符串专题 刷题记录(1)
82 0
剑指offer 字符串专题 刷题记录(2)
剑指offer 字符串专题 刷题记录(2)
86 0
剑指offer 字符串专题 刷题记录(2)
|
算法
剑指offer 数组专题 刷题记录(4)
剑指offer 数组专题 刷题记录(4)
87 0
剑指offer 数组专题 刷题记录(1)
剑指offer 数组专题 刷题记录(1)
105 0

热门文章

最新文章