给出包含一些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
答案 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++;
}