剑指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;
    }
}
目录
相关文章
|
7月前
【一刷《剑指Offer》】面试题 23:从上往下打印二叉树
【一刷《剑指Offer》】面试题 23:从上往下打印二叉树
|
7月前
|
算法
六六力扣刷题数组之再刷二分法
六六力扣刷题数组之再刷二分法
46 0
C/C++ leetcode刷题的各种小tips记录
C/C++ leetcode刷题的各种小tips记录
145 0
牛客刷题记录(常见笔试题)(上)
牛客刷题记录(常见笔试题)(上)
113 0
|
监控 算法
牛客刷题记录(常见笔试题)(下)
牛客刷题记录(常见笔试题)(下)
128 0
【刷题记录】36. 有效的数独
【刷题记录】36. 有效的数独
151 0
【刷题记录】36. 有效的数独
剑指offer 字符串专题 刷题记录(2)
剑指offer 字符串专题 刷题记录(2)
107 0
剑指offer 字符串专题 刷题记录(2)
剑指offer 数组专题 刷题记录(2)
剑指offer 数组专题 刷题记录(2)
123 0
剑指offer 数组专题 刷题记录(2)
剑指offer 链表专题 刷题记录(下)
剑指offer 链表专题 刷题记录(下)
73 0
剑指offer 链表专题 刷题记录(下)
剑指offer 二叉树专题 刷题记录(2)
剑指offer 二叉树专题 刷题记录(2)
116 0
剑指offer 二叉树专题 刷题记录(2)