我有奇偶校验问题:二进制字符串是一个只包含'0'和'1'字符的字符串 . 二进制字符串的奇偶校验定义如下 . 如果字符“1”出现在该字符串中的次数是偶数,则奇偶校验为0;如果它是奇数,则奇偶校验为1.例如,奇偶校验“101”为0,奇偶校验“10110”为1,奇偶校验“001001101”为0.写一个函数,使用签名
public static int parity(String binaryStr)
//no changes are allowed & only use recursive solution, no loops allowed
我设法迭代地写它,但我的递归是outOfboundries:
public static int parity(String binaryStr) {
int counter = 0;
for (int i = 0; i < binaryStr.length () ; i++) {
if (binaryStr.charAt (i) == 49) {
counter++;
}
}
if ( counter % 2 == 0 ) {
return 0;
}
else {
return 1;
}
}
递归:
private static int index = 0;
private static int ans = 0;
private static int parity(String binaryStr) {
if ( index == binaryStr.length ()-1 ) {
if ( ans % 2 == 0 ) {
return 0;
}
else {
return 1;
}
}
else if ( binaryStr.charAt (index) == '1' ) {
ans++;
return parity (binaryStr.substring (index++));
}
return parity (binaryStr.substring (index++));
}
请帮我纠正一下