Advertisement
Guest User

Untitled

a guest
Feb 14th, 2020
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.77 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement