publicintfindMaxLength(int[] nums){int[] sumArr =newint[nums.length];intN= nums.length;int sum =0;for(int i =0; i <N; i++){if(nums[i]==1){
sum++;
sumArr[i]= sum;}elseif(nums[i]==0){
sum--;
sumArr[i]= sum;}}int left =0;int max =0;Map<Integer,Integer> map =newHashMap<>();
map.put(0,-1);for(int i =0; i <N; i++){if(map.containsKey(sumArr[i])){if(max < i - map.get(sumArr[i])){
max = i - map.get(sumArr[i]);}}else{
map.put(sumArr[i], i);}}return max;}
publicString[]findLongestSubarray(String[] array){intN= array.length;int[] sumArr =newint[N];int sum =0;int left =0;int right =0;for(int i =0; i < array.length; i++){if(Character.isDigit(array[i].charAt(0))){
sum--;
sumArr[i]= sum;}else{
sum++;
sumArr[i]= sum;}}Map<Integer,Integer> map =newHashMap<>();
map.put(0,-1);int max =0;for(int i =0; i <N; i++){if(map.containsKey(sumArr[i])){if(max < i - map.get(sumArr[i])){
max = i - map.get(sumArr[i]);
left = map.get(sumArr[i]);
right = i;}}else{
map.put(sumArr[i], i);}}String[] ans =newString[right - left];int index =0;for(int i = left +1; i <= right; i++){
ans[index]= array[i];
index++;}return ans;}