输入一个数字n和一个字符串,n表示该字符串长度。字符串只有0和1,0和1挨着就消除,00和11保留,无限消除直到得出最后结果,并输出结果字符串的长度。
例:
输入: 4 1010 输出: 0 输入: 4 1110 输出: 2
1 import java.util.ArrayList; 2 import java.util.List; 3 import java.util.Scanner; 4 5 public class Test1 { 6 public static void main(String[] args) { 7 //获取输入字符串 8 int[] arr = getArr(); 9 List<Integer> arrayList = new ArrayList<Integer>(arr.length); 10 for (Integer s : arr) { 11 arrayList.add(s); 12 } 13 //递归处理 14 List<Integer> result = deal(arrayList, 0); 15 //输出结果 16 System.out.println(result.size()); 17 18 } 19 static List<Integer> deal(List<Integer> arr, int i) { 20 boolean flag = false; 21 if(arr.size() == 0) { 22 return new ArrayList<Integer>(); 23 } 24 if (arr.get(i) != arr.get(i + 1)) { 25 arr.remove(i); 26 arr.remove(i); 27 flag = true; 28 if (flag == true) { 29 deal(arr, 0); 30 } 31 }else { 32 if((i + 2) < arr.size()) { 33 deal(arr, i + 1); 34 }else { 35 return arr; 36 } 37 } 38 return arr; 39 } 40 41 static int[] getArr() { 42 @SuppressWarnings("resource") 43 Scanner sc = new Scanner(System.in); 44 int n = Integer.parseInt(sc.nextLine()); 45 String str = sc.nextLine(); 46 String[] arr_str = str.split(""); 47 int[] arr = new int[n]; 48 for(int i = 0; i < arr_str.length; i ++) { 49 arr[i] = Integer.parseInt(arr_str[i]); 50 } 51 return arr; 52 } 53 54 }
原文:https://www.cnblogs.com/dongxiaoxuan/p/10660516.html