给定包含一些PAN卡号的单词段落P。计算 P 中不同的有效 PAN 卡号的数量。
有效的 PAN 卡号是一个 10 长度的字母数字单词,格式为:"AAAAA1111A">
-
A 表示英语大写字母的任何字母。
1 表示 0,1,2.....9 中的任何数字。
第四个字符只能来自集合 {"A","B","C","F","G","H","L","J","P","T","K"}。
第五个字符必须与第一个字符相同。
输入
$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++;
}