带通配符的数——Java版

给定一个带通配符问号的数W,问号可以代表任意一个一位数字。


再给定一个整数X,和W具有同样的长度。


问有多少个整数符合W的形式并且比X大?




输入格式


多组数据,每组数据两行,第一行是W,第二行是X,它们长度相同。在[1..10]之间.


输出格式


每行一个整数表示结果。


答题说明:


输入样例


36?1?8


236428


8?3


910


?


5


输出样例


100


0


4


import java.util.Scanner;

//w s
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) {
			
			String w = sc.nextLine();
			String s = sc.nextLine();

			char[] chw = w.toCharArray();
			char[] chs = s.toCharArray();

			long count = 0;
			//依次比较每一个字符的大小
			for (int i = 0; i < w.length(); i++) {
				//如果出现通配符则计算在此处的符合条件的种数
				if (chw[i] == '?') {
					int t = '9' - chs[i];
					int r = 0;
					int j = i + 1;
					while ((j = w.indexOf('?', j)) != -1) {
						r++;
						j++;
					}
					count += Math.pow(10, r) * t;
				} 
				//如果不是通配符,则比较常规字符的大小				
				else {
					//若大于,则无论后面通配符填什么数都成立
					if (chw[i] > chs[i]) {
						int r = 0;
						int j = i + 1;
						while ((j = w.indexOf('?', j)) != -1) {
							r++;
							j++;
						}
						count += Math.pow(10, r);
						break;
					} 
					//若小于,则无论后面通配符填什么数都不成立
					else if (chw[i] < chs[i]) {
						break;
					}
					//若等于,则继续循环
				}

			}
			System.out.println(count);
		}
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值