Problem2
给出n个数字a1…an,问最多有多少个不重叠的非空区间,使得每个区间内数字的xor都等于0。
import java.util.HashMap;
public class Code_8_25_MostEor {
public static int mostEOR(int[] arr) {
int xor = 0;
int[] dp = new int[arr.length];
HashMap<Integer, Integer> map = new HashMap<>();
map.put(0, -1);
for (int i = 0; i < arr.length; ++i) {
xor ^= arr[i];
if (map.containsKey(xor)) {
int pre = map.get(xor);
dp[i] = pre == -1 ? 1 : (dp[pre] + 1);
}
if (i > 0) {
dp[i] = Math.max(dp[i - 1], dp[i]);
}
map.put(xor, i);
}
return dp[arr.length - 1];
}
}