使用以下条件验证 PAN 卡号



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

有效的 PAN 卡号是一个 10 长度的字母数字单词,格式为:"AAAAA1111A">

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

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

  4. 第四个字符只能来自集合 {"A","B","C","F","G","H","L","J","P","T","K"}。

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

输入

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

输出

2

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

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

希望这段代码对您有所帮助。在这里,该段落根据特殊字符的出现被拆分为单词,并将其保留为单独的数组。应用规则 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++;
        }

最新更新