带通配符的数——Java版

来源:互联网 发布:金融大数据分析师待遇 编辑:程序博客网 时间:2024/05/14 06:02
给定一个带通配符问号的数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 spublic 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
原创粉丝点击