腾讯后台开发java算法笔试

一、题目

输入一个数字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 }

 

猜你喜欢

转载自www.cnblogs.com/dongxiaoxuan/p/10660516.html
今日推荐