第三题结束后自己琢磨的提供个思路,而且这个输入应该怎么处理,中间可能有多个空行     public static int maxCount=0;   int start=0;     int end=al.size();         for (int i = start; i < end; i++) {             if(al.get(i).matches(" *for.*\\(.*")){start=i;    int mark=0;                 for (int j = i; j < end; j++) { if(al.get(j).indexOf('{&(31183)#39;)>-1){mark++;}if(al.get(j).indexOf('}&(31182)#39;)>-1){ mark--; }if(mark==0){ end=j;break;} }                 dfs(al,count+1,start+1,end); i=end;  } }   System.out.println(maxCount);   }     public static void dfs(ArrayList<String> al, int count, int x,int y){ if(count>maxCount)maxCount=count;        int start=0;        int end=0;         for (int i = x; i < y; i++) {        if(al.get(i).matches(" *for.*\\(.*")){  start=i;    int mark=0;                for (int j = i; j <y; j++) {    if(al.get(j).indexOf('{&(31183)#39;)>-1){ mark++;  } if(al.get(j).indexOf('}&(31182)#39;)>-1){ mark--; }     if(mark==0){ end=j;break; }                 }  dfs(al,count+1,start+1,end);          i=end;}   } }