SHARE
TWEET

Untitled

a guest Feb 14th, 2020 77 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public class MyTestClass {
  2.  
  3.     private char target = 'O';
  4.     private String input =  "OXXXXXXXXXXXXXXXXXXX\n" +
  5.                             "XXXXXXXXXXXXXXXXXXXX\n" +
  6.                             "XXXXXXXXXXXXXXOOOOOO\n" +
  7.                             "XXXXOXXXXXXXXXXXXXXX\n" +
  8.                             "XXXXXXXXXXXXXXXXXXXX\n" +
  9.                             "XXXXXXXXXXXXXXXXXXXX\n" +
  10.                             "XXXXXXXXXXXXXXXXXXXX\n" +
  11.                             "XXXXXXXXXXXXXXXXXXXX\n" +
  12.                             "XXXXXXXXXOOOXXXXXXXX\n" +
  13.                             "XXXXXXXXXOXOXXXXXXXX\n" +
  14.                             "XXXXXXXXXOOOXXXXXXXX\n" +
  15.                             "XXXXXXXXXXXXXXXXXXXX\n" +
  16.                             "XXXXXXXXXXXXXXXXXXXX\n" +
  17.                             "XXXXXXOOXXXXXXXXXXXX\n" +
  18.                             "XXXXXXOOXXXXXXXXXXXX\n" +
  19.                             "XXXXXXXXOOXXXXXXXXXX\n" +
  20.                             "XXXXXXXXOOOOXXXXXXXX\n" +
  21.                             "XXXXXXXXXXXXXXXXXXXX\n" +
  22.                             "XXXXXXXXXXXXXXXXXXXX\n" +
  23.                             "XXXXXXXXXXXXXXXXXXXO";
  24.  
  25.     @Test
  26.     public void count() {
  27.         String[] str = input.split("\n");
  28.         int h = str.length;
  29.         int w = str[0].length();
  30.         char[][] chars = new char[h][w];
  31.         for (int i = 0; i < h; i++) {
  32.             char[] charsInRow = str[i].toCharArray();
  33.             System.arraycopy(charsInRow, 0, chars[i], 0, w);
  34.         }
  35.  
  36.         Map<Point, ArrayList<Point>> islandMap = new HashMap<>();
  37.  
  38.         for (int i = 0; i < h; i++) {
  39.             for (int j = 0; j < w; j++) {
  40.  
  41.                 char c = chars[i][j];
  42.                 if(c == target) {
  43.                     Point firstPoint = new Point(j, i);
  44.  
  45.                     int iLeft = i;
  46.                     int jLeft  = j - 1;
  47.  
  48.                     Point left = new Point(jLeft, iLeft);
  49.  
  50.                     int iTop = i - 1;
  51.                     int jTop  = j;
  52.  
  53.                     Point top = new Point(jTop, iTop);
  54.  
  55.                     boolean addedToList = false;
  56.  
  57.                     for (Point key : islandMap.keySet()) {
  58.                         ArrayList<Point> points = islandMap.get(key);
  59.  
  60.                         if (points != null && (points.contains(left) || points.contains(top))) {
  61.                             points.add(firstPoint);
  62.                             addedToList = true;
  63.                         }
  64.                     }
  65.  
  66.                     if (!addedToList) {
  67.                         ArrayList<Point> list = new ArrayList<>();
  68.                         list.add(firstPoint);
  69.                         islandMap.put(firstPoint, list);
  70.                     }
  71.                 }
  72.             }
  73.         }
  74.  
  75.         System.out.println(islandMap.keySet().size());
  76.         int biggest = 0;
  77.         for (List<Point> lists : islandMap.values()) {
  78.             if (biggest <= lists.size()) {
  79.                 biggest = lists.size();
  80.             }
  81.         }
  82.         System.out.println(biggest);
  83.     }
  84.  
  85.     class Point {
  86.         int x, y;
  87.  
  88.         @Override
  89.         public String toString() {
  90.             return "{" +
  91.                     "\"x\":" + x +
  92.                     ", \"y\":" + y +
  93.                     '}';
  94.         }
  95.  
  96.         public Point(int x, int y) {
  97.             this.x = x;
  98.             this.y = y;
  99.         }
  100.  
  101.         @Override
  102.         public boolean equals(Object o) {
  103.             if (this == o) return true;
  104.             if (o == null || getClass() != o.getClass()) return false;
  105.             Point point = (Point) o;
  106.             return x == point.x &&
  107.                     y == point.y;
  108.         }
  109.  
  110.         @Override
  111.         public int hashCode() {
  112.             return Objects.hash(x, y);
  113.         }
  114.     }
  115. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top