From 089faae283bc6c0fdc869d7c1a2d3ceef4dc140c Mon Sep 17 00:00:00 2001 From: Du Yuanchao Date: Fri, 5 Nov 2021 10:51:47 +0800 Subject: [PATCH 1/4] ValidSudoku --- .../leetcode/middle/ValidSudoku.java | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/main/java/com/examplehub/leetcode/middle/ValidSudoku.java diff --git a/src/main/java/com/examplehub/leetcode/middle/ValidSudoku.java b/src/main/java/com/examplehub/leetcode/middle/ValidSudoku.java new file mode 100644 index 00000000..e8a46080 --- /dev/null +++ b/src/main/java/com/examplehub/leetcode/middle/ValidSudoku.java @@ -0,0 +1,68 @@ +package com.examplehub.leetcode.middle; + +/** + * https://leetcode.com/problems/valid-sudoku/ + */ +public class ValidSudoku { + public static boolean solution1(char[][] board) { + + //travel all rows to check + for (int i = 0; i < 9; i++) { + int[] digitTable = new int[10]; + for (int j = 0; j < 9; j++) { + if (board[i][j] != '.') { + digitTable[board[i][j] - '0']++; + } + } + if (containsRepeat(digitTable)) { + return false; + } + } + + //travel all columns to check + for (int i = 0; i < 9; i++) { + int[] digitTable = new int[10]; + for (int j = 0; j < 9; j++) { + if (board[j][i] != '.') { + digitTable[board[j][i] - '0']++; + } + } + if (containsRepeat(digitTable)) { + return false; + } + } + + //travel all sub-box + //TODO + return true; + } + + public static boolean containsRepeat(int[] table) { + for (int num : table) { + if (num > 1) { + return true; + } + } + return false; + } + + public static boolean solution2(char[][] board) { + int[][] rows = new int[9][9]; + int[][] cols = new int[9][9]; + int[][][] subBoxes = new int[3][3][9]; + for (int i = 0; i < 9; ++i) { + for (int j = 0; j < 9; ++j) { + if (board[i][j] != '.') { + int index = board[i][j] - '1'; + rows[i][index]++; + cols[j][index]++; + subBoxes[i / 3][j / 3][index]++; + if (rows[i][index] > 1 || cols[j][index] > 1 || subBoxes[i / 3][j / 3][index] > 1) { + return false; + } + } + } + } + return true; + } +} From 30f6307d735f1df71707aa111f8eea303dfe61bc Mon Sep 17 00:00:00 2001 From: Du Yuanchao Date: Fri, 5 Nov 2021 10:54:43 +0800 Subject: [PATCH 2/4] valid sudoku --- .../leetcode/middle/ValidSudokuTest.java | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/test/java/com/examplehub/leetcode/middle/ValidSudokuTest.java diff --git a/src/test/java/com/examplehub/leetcode/middle/ValidSudokuTest.java b/src/test/java/com/examplehub/leetcode/middle/ValidSudokuTest.java new file mode 100644 index 00000000..c298cd5f --- /dev/null +++ b/src/test/java/com/examplehub/leetcode/middle/ValidSudokuTest.java @@ -0,0 +1,68 @@ + + +package com.examplehub.leetcode.middle; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class ValidSudokuTest { + + @Test + void testSolution1() { + char[][] board = { + {'5', '3', '.', '.', '7', '.', '.', '.', '.'}, + {'6', '.', '.', '1', '9', '5', '.', '.', '.'}, + {'.', '9', '8', '.', '.', '.', '.', '6', '.'}, + {'8', '.', '.', '.', '6', '.', '.', '.', '3'}, + {'4', '.', '.', '8', '.', '3', '.', '.', '1'}, + {'7', '.', '.', '.', '2', '.', '.', '.', '6'}, + {'.', '6', '.', '.', '.', '.', '2', '8', '.'}, + {'.', '.', '.', '4', '1', '9', '.', '.', '5'}, + {'.', '.', '.', '.', '8', '.', '.', '7', '9'}, + }; + assertTrue(ValidSudoku.solution1(board)); + + board = new char[][]{ + {'8', '3', '.', '.', '7', '.', '.', '.', '.'}, + {'6', '.', '.', '1', '9', '5', '.', '.', '.'}, + {'.', '9', '8', '.', '.', '.', '.', '6', '.'}, + {'8', '.', '.', '.', '6', '.', '.', '.', '3'}, + {'4', '.', '.', '8', '.', '3', '.', '.', '1'}, + {'7', '.', '.', '.', '2', '.', '.', '.', '6'}, + {'.', '6', '.', '.', '.', '.', '2', '8', '.'}, + {'.', '.', '.', '4', '1', '9', '.', '.', '5'}, + {'.', '.', '.', '.', '8', '.', '.', '7', '9'}, + }; + assertFalse(ValidSudoku.solution1(board)); + } + + @Test + void testSolution2() { + char[][] board = { + {'5', '3', '.', '.', '7', '.', '.', '.', '.'}, + {'6', '.', '.', '1', '9', '5', '.', '.', '.'}, + {'.', '9', '8', '.', '.', '.', '.', '6', '.'}, + {'8', '.', '.', '.', '6', '.', '.', '.', '3'}, + {'4', '.', '.', '8', '.', '3', '.', '.', '1'}, + {'7', '.', '.', '.', '2', '.', '.', '.', '6'}, + {'.', '6', '.', '.', '.', '.', '2', '8', '.'}, + {'.', '.', '.', '4', '1', '9', '.', '.', '5'}, + {'.', '.', '.', '.', '8', '.', '.', '7', '9'}, + }; + assertTrue(ValidSudoku.solution2(board)); + + board = new char[][]{ + {'8', '3', '.', '.', '7', '.', '.', '.', '.'}, + {'6', '.', '.', '1', '9', '5', '.', '.', '.'}, + {'.', '9', '8', '.', '.', '.', '.', '6', '.'}, + {'8', '.', '.', '.', '6', '.', '.', '.', '3'}, + {'4', '.', '.', '8', '.', '3', '.', '.', '1'}, + {'7', '.', '.', '.', '2', '.', '.', '.', '6'}, + {'.', '6', '.', '.', '.', '.', '2', '8', '.'}, + {'.', '.', '.', '4', '1', '9', '.', '.', '5'}, + {'.', '.', '.', '.', '8', '.', '.', '7', '9'}, + }; + assertFalse(ValidSudoku.solution2(board)); + } +} \ No newline at end of file From f95b8e466b7fe84379ea404c1296e83d9a8cc55b Mon Sep 17 00:00:00 2001 From: Du Yuanchao Date: Sat, 6 Nov 2021 00:12:55 +0800 Subject: [PATCH 3/4] update autoboxing --- .../basics/number/DoubleExample.java | 4 + .../examplehub/basics/oop/ObjectExample.java | 4 + .../basics/bool/BooleanExampleTest.java | 20 ++++ .../basics/number/DoubleExampleTest.java | 32 +++++ .../basics/number/IntegerExampleTest.java | 50 ++++++++ .../basics/oop/ObjectExampleTest.java | 110 ++++++++++++++++++ 6 files changed, 220 insertions(+) create mode 100644 src/main/java/com/examplehub/basics/number/DoubleExample.java create mode 100644 src/main/java/com/examplehub/basics/oop/ObjectExample.java create mode 100644 src/test/java/com/examplehub/basics/number/DoubleExampleTest.java create mode 100644 src/test/java/com/examplehub/basics/oop/ObjectExampleTest.java diff --git a/src/main/java/com/examplehub/basics/number/DoubleExample.java b/src/main/java/com/examplehub/basics/number/DoubleExample.java new file mode 100644 index 00000000..0e57f841 --- /dev/null +++ b/src/main/java/com/examplehub/basics/number/DoubleExample.java @@ -0,0 +1,4 @@ +package com.examplehub.basics.number; + +public class DoubleExample { +} diff --git a/src/main/java/com/examplehub/basics/oop/ObjectExample.java b/src/main/java/com/examplehub/basics/oop/ObjectExample.java new file mode 100644 index 00000000..ca654f7b --- /dev/null +++ b/src/main/java/com/examplehub/basics/oop/ObjectExample.java @@ -0,0 +1,4 @@ +package com.examplehub.basics.oop; + +public class ObjectExample { +} diff --git a/src/test/java/com/examplehub/basics/bool/BooleanExampleTest.java b/src/test/java/com/examplehub/basics/bool/BooleanExampleTest.java index fde37595..fd29f4da 100644 --- a/src/test/java/com/examplehub/basics/bool/BooleanExampleTest.java +++ b/src/test/java/com/examplehub/basics/bool/BooleanExampleTest.java @@ -48,4 +48,24 @@ void testTernaryOperator() { int abs = num < 0 ? -num : num; assertEquals(3, abs); } + + @Test + void testValueOf() { + Boolean b = Boolean.valueOf(true); + assertTrue(b.booleanValue()); + + b = Boolean.valueOf("false"); + assertFalse(b.booleanValue()); + } + + @Test + void testAutoBoxing() { + Boolean b = false; + System.out.println(b); + assertFalse(b); + + boolean bValue = b; + System.out.println(bValue); + assertFalse(bValue); + } } diff --git a/src/test/java/com/examplehub/basics/number/DoubleExampleTest.java b/src/test/java/com/examplehub/basics/number/DoubleExampleTest.java new file mode 100644 index 00000000..b6850551 --- /dev/null +++ b/src/test/java/com/examplehub/basics/number/DoubleExampleTest.java @@ -0,0 +1,32 @@ +package com.examplehub.basics.number; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class DoubleExampleTest { + @Test + void testValueOf() { + Double d = Double.valueOf(3.14); + System.out.println(d.doubleValue()); + assertEquals(3.14, d.doubleValue()); + + d = Double.valueOf("3.14159"); + System.out.println(d.doubleValue()); + assertEquals(3.14159, d.doubleValue()); + } + + @Test + void testIsNaN() { + Double d = 0.0 / 0; + assertEquals(d, Double.NaN); + } + + @Test + void testAutoboxing() { + Double d = 3.14; + assertEquals(3.14, d.doubleValue()); + double pi = d; + assertEquals(3.14, pi); + } +} \ No newline at end of file diff --git a/src/test/java/com/examplehub/basics/number/IntegerExampleTest.java b/src/test/java/com/examplehub/basics/number/IntegerExampleTest.java index 6f315d42..aa059636 100644 --- a/src/test/java/com/examplehub/basics/number/IntegerExampleTest.java +++ b/src/test/java/com/examplehub/basics/number/IntegerExampleTest.java @@ -2,9 +2,39 @@ import static org.junit.jupiter.api.Assertions.*; +import jdk.jfr.StackTrace; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.function.Executable; class IntegerExampleTest { + + @Test + void testValueOf() { + Integer integer = Integer.valueOf(100); + System.out.println(integer); + assertEquals(100, integer.intValue()); + + integer = Integer.valueOf("123"); + System.out.println(integer); + assertEquals(123, integer.intValue()); + + integer = Integer.valueOf("a", 16); + System.out.println(integer); + assertEquals(10, integer.intValue()); + } + + @Test + void testParseInt() { + int number = Integer.parseInt("123"); + System.out.println(number); + assertEquals(123, number); + + assertThrows(NumberFormatException.class, () -> { + int num = Integer.parseInt("123a"); + fail(); + }); + } + @Test void testAutoBoxing() { Integer integer = 10; @@ -12,6 +42,11 @@ void testAutoBoxing() { Integer integer1 = 10; assertTrue(integer == integer1); assertTrue(integer.equals(integer1)); + + Integer first = 128; + Integer second = 128; + System.out.println(first == second); + assertNotSame(first, second); } @Test @@ -24,4 +59,19 @@ void testAutoBoxingNullPointer() { assertTrue(true); } } + + @Test + void testToBinaryString() { + assertEquals("1010", Integer.toBinaryString(10)); + } + + @Test + void testToOctalString() { + assertEquals("12", Integer.toOctalString(10)); + } + + @Test + void test(){ + assertEquals("a", Integer.toHexString(10)); + } } diff --git a/src/test/java/com/examplehub/basics/oop/ObjectExampleTest.java b/src/test/java/com/examplehub/basics/oop/ObjectExampleTest.java new file mode 100644 index 00000000..75877b1a --- /dev/null +++ b/src/test/java/com/examplehub/basics/oop/ObjectExampleTest.java @@ -0,0 +1,110 @@ +package com.examplehub.basics.oop; + +import org.junit.jupiter.api.Test; + +import java.util.Objects; + +import static org.junit.jupiter.api.Assertions.*; + +class ObjectExampleTest { + @Test + void testObject() { + Object o = new Object(); + System.out.println(o); + } + + @Test + void testEquals() { + class Student { + private int id; + private String name; + public Student(int id, String name) { + this.id = id; + this.name = name; + } + } + class People { + private final String name; + private final int age; + + public People(String name, int age) { + this.name = name; + this.age = age; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + People people = (People) o; + return age == people.age && Objects.equals(name, people.name); + } + + @Override + public int hashCode() { + return 0; + } + } + Student stu1 = new Student(10001, "duyuanchao"); + Student stu2 = new Student(10001, "duyuanchao"); + assertNotSame(stu1, stu2); + assertNotEquals(stu1, stu2); + + People p1 = new People("duyuanchao", 25); + People p2 = new People("duyuanchao", 25); + People p3 = new People("jack", 25); + assertNotSame(p1, p2); + assertEquals(p1, p2); + assertNotEquals(p1, p3); + } + + @Test + void testHashCode() { + class People { + private final String name; + private final int age; + + public People(String name, int age) { + this.name = name; + this.age = age; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + People people = (People) o; + return age == people.age && Objects.equals(name, people.name); + } + + @Override + public int hashCode() { + return this.age % 13; + } + } + People p1 = new People("duyuanchao", 25); + People p2 = new People("duyuanchao", 25); + assertEquals(p1.hashCode(), p2.hashCode()); + } + + @Test + void testToString() { + class People { + private final String name; + private final int age; + + public People(String name, int age) { + this.name = name; + this.age = age; + } + + @Override + public String toString() { + return "name = " + name + ", age = " + age; + } + } + + People people = new People("duyuanchao", 25); + assertEquals("name = duyuanchao, age = 25", people.toString()); + } +} \ No newline at end of file From c14c5e18a369fe471bd13fa53c613877e52fa578 Mon Sep 17 00:00:00 2001 From: Du Yuanchao Date: Sat, 6 Nov 2021 10:54:57 +0800 Subject: [PATCH 4/4] update basics --- .../basics/chars/CharExampleTest.java | 59 +++++++++++++++++++ .../basics/utils/MathUtilsExampleTest.java | 7 +++ 2 files changed, 66 insertions(+) diff --git a/src/test/java/com/examplehub/basics/chars/CharExampleTest.java b/src/test/java/com/examplehub/basics/chars/CharExampleTest.java index 7dcd997f..fc3e0a53 100644 --- a/src/test/java/com/examplehub/basics/chars/CharExampleTest.java +++ b/src/test/java/com/examplehub/basics/chars/CharExampleTest.java @@ -32,4 +32,63 @@ void testAddAndSub() { assertEquals(9, '9' - '0'); assertEquals(0, 'a' - 97); } + + @Test + void testValueOf() { + Character c = Character.valueOf('A'); + assertEquals('A', c.charValue()); + } + + @Test + void testAutoboxing() { + Character c = 'A'; + System.out.println(c); + assertEquals('A', c); + } + + @Test + void testIsLower() { + assertFalse(Character.isLowerCase('A')); + assertTrue(Character.isLowerCase('a')); + assertFalse(Character.isLowerCase('1')); + } + + @Test + void testIsUpper() { + assertTrue(Character.isUpperCase('A')); + assertFalse(Character.isUpperCase('a')); + assertFalse(Character.isUpperCase('1')); + } + + @Test + void testIsDigit() { + System.out.println(Character.isDigit('A')); + System.out.println(Character.isDigit('a')); + System.out.println(Character.isDigit('1')); + + assertFalse(Character.isDigit('A')); + assertFalse(Character.isDigit('a')); + assertTrue(Character.isDigit('1')); + } + + @Test + void testToLower() { + assertEquals('a', Character.toLowerCase('A')); + } + + @Test + void testToUpper() { + assertEquals('A', Character.toUpperCase('a')); + } + + @Test + void testGetNumericValue() { + System.out.println(Character.getNumericValue('8')); + assertEquals(8, Character.getNumericValue('8')); + + System.out.println(Character.getNumericValue('A')); + System.out.println(Character.getNumericValue('a')); + assertEquals(10, Character.getNumericValue('A')); + assertEquals(10, Character.getNumericValue('a')); + } } diff --git a/src/test/java/com/examplehub/basics/utils/MathUtilsExampleTest.java b/src/test/java/com/examplehub/basics/utils/MathUtilsExampleTest.java index 62e2331d..98bd09b8 100644 --- a/src/test/java/com/examplehub/basics/utils/MathUtilsExampleTest.java +++ b/src/test/java/com/examplehub/basics/utils/MathUtilsExampleTest.java @@ -51,4 +51,11 @@ void testRandom() { double randomNumber = Math.random(); assertTrue(randomNumber >= 0 && randomNumber < 1); } + + @Test + void testRound() { + assertEquals(3, Math.round(3.14)); + assertEquals(4, Math.round(3.78)); + assertEquals(-3, Math.round(-3.14)); + } } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy