符合以下条件的PAN卡号验证

时间:2019-07-16 12:19:28

标签: java c algorithm data-structures dynamic-programming

给出包含一些PAN卡号的单词的P段。计算P中不同的有效PAN卡号的数量。

有效的PAN卡号是长度为10个字母数字的单词,其形式为:“ AAAAA1111A”

  1. A表示英文大写字母的任何字母。

  2. 1表示0,1,2 ..... 9中的任何数字。

  3. 第四个字符只能来自{{A“,” B“,” C“,” F“,” G“,” H“,” L“,” J“,” P“ “,” T“,” K“}。

  4. 第五个字符必须与第一个字符相同。

输入

$MKOFM53365d*02Hd| ^BAAAB0000CAAC1111...%G

输出

2

有人可以为我指出正确的解决方案吗,我在stackoverflow上尝试了另一种解决方案,但是它假定用户仅输入PAN卡而不输入随机字符。

有关完整的问题,请参考:https://justpaste.it/2ybbe

1 个答案:

答案 0 :(得分:0)

希望这段代码对您有帮助。此处根据特殊字符的出现将段落分为单词并将其保留为单独的数组。适用规则1至4。

        String paragraph = "$MKOFM53365d*02Hd|  ^BAAAB0000CAAC1111...%G";
        String[] words= paragraph.split("[\\[\\]\\\\;\\'=./{}|:\"<>?`~!@#$%^&*()_+-]");
        String FIXED_PAN_CHARACTERS = "ABCFGHLJPTK";
        int PAN_COUNT = 0;
        for (String word : words) {
            String trim = StringUtils.trim(word);
            if (StringUtils.isEmpty(trim) || trim.length() < 10 || (trim.charAt(0) != trim.charAt(4))
                    || (FIXED_PAN_CHARACTERS.indexOf(trim.charAt(3)) == -1))
                continue;
            PAN_COUNT++;
        }