public String[]findLongestSubarray(String[] array){int n = array.length;int[] sum =newint[n];for(int i =0; i < array.length; i++){
String s = array[i];//数字可能是 42 19 这样的if(s.compareTo("A")>=0&& s.compareTo("z")<=0){
sum[i]=-1;}else{
sum[i]=1;}}for(int i =1; i < n; i++) sum[i]+= sum[i -1];int l =-1, r =-1;
Map<Integer, Integer> map =newHashMap<>();//记录当前值的最左侧的下标for(int i =0; i < n; i++){if(sum[i]==0){//为0的情况if(r - l +1< i +1){
r = i;
l =0;}continue;}//记录下第一次出现的数字的最左侧的下标if(!map.containsKey(sum[i])) map.put(sum[i], i);else{if(r - l +1< i - map.get(sum[i])){
r = i;
l = map.get(sum[i])+1;}}}if(l ==-1&& r ==-1)returnnewString[]{};return Arrays.copyOfRange(array, l, r +1);//取头不取尾}