题解 | #字符串通配符#

字符串通配符

https://www.nowcoder.com/practice/43072d50a6eb44d2a6c816a283b02036

    递归算法,改进了一下,正好踩点通过
import java.util.Scanner;

public class Main27 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            String str = in.nextLine().toLowerCase();
            String str1 = in.nextLine().toLowerCase();
            System.out.println(isBoolean(str,str1,0,0));
        }
    }
    static boolean isBoolean(String str,String str1 ,int n,int m){
        if (str.length() == n && str1.length() == m){
            return true;
        }
        if (str.length() == n || str1.length() == m){
            return false;
        }
        if (str.charAt(n) == str1.charAt(m)){
            return isBoolean(str,str1,n+1,m+1);
        }
        if (str.charAt(n) == '*' && n+1 !=str.length() && str.charAt(n+1) == '*'){
            return isBoolean(str,str1,n+1,m);
        }
        if (str.charAt(n) == '?' && ((str1.charAt(m) >= '0' && str1.charAt(m) <= '9')|| (str1.charAt(m) >= 'a' && str1.charAt(m) <= 'z'))){
            return isBoolean(str,str1,n+1,m+1);
        }else if (str.charAt(n) == '*' && ((str1.charAt(m) >= '0' && str1.charAt(m) <= '9')|| (str1.charAt(m) >= 'a' && str1.charAt(m) <= 'z'))){
            return isBoolean(str,str1,n,m+1)||isBoolean(str,str1,n+1,m+1)||isBoolean(str,str1,n+1,m);
        }else {
            return false;
        }
    }
}

} }

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务