From 2941c6d626abe3fcf8522f15220f45e7b3c40dd2 Mon Sep 17 00:00:00 2001 From: "chenguangjian.jk" Date: Wed, 19 Jul 2023 20:19:37 +0800 Subject: [PATCH] 20230719 --- .../exercies.md" | 28 +++++ .../solution.java" | 117 ++++++++++++++++++ .../test_cases/1.in" | 2 + .../test_cases/1.out" | 1 + .../test_cases/10.in" | 2 + .../test_cases/10.out" | 1 + .../test_cases/2.in" | 2 + .../test_cases/2.out" | 1 + .../test_cases/3.in" | 2 + .../test_cases/3.out" | 1 + .../test_cases/4.in" | 2 + .../test_cases/4.out" | 1 + .../test_cases/5.in" | 2 + .../test_cases/5.out" | 1 + .../test_cases/6.in" | 2 + .../test_cases/6.out" | 1 + .../test_cases/7.in" | 2 + .../test_cases/7.out" | 1 + .../test_cases/8.in" | 2 + .../test_cases/8.out" | 1 + .../test_cases/9.in" | 2 + .../test_cases/9.out" | 1 + .../exercises.md" | 37 ++++++ .../solution.java" | 81 ++++++++++++ .../test_cases/1.in" | 1 + .../test_cases/1.out" | 1 + .../test_cases/10.in" | 1 + .../test_cases/10.out" | 1 + .../test_cases/2.in" | 1 + .../test_cases/2.out" | 1 + .../test_cases/3.in" | 1 + .../test_cases/3.out" | 1 + .../test_cases/4.in" | 1 + .../test_cases/4.out" | 1 + .../test_cases/5.in" | 1 + .../test_cases/5.out" | 1 + .../test_cases/6.in" | 1 + .../test_cases/6.out" | 1 + .../test_cases/7.in" | 1 + .../test_cases/7.out" | 1 + .../test_cases/8.in" | 1 + .../test_cases/8.out" | 1 + .../test_cases/9.in" | 1 + .../test_cases/9.out" | 1 + .../\351\242\230\347\233\256.md" | 31 +++++ 45 files changed, 344 insertions(+) create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/exercies.md" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/solution.java" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/1.in" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/1.out" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/10.in" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/10.out" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/2.in" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/2.out" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/3.in" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/3.out" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/4.in" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/4.out" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/5.in" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/5.out" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/6.in" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/6.out" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/7.in" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/7.out" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/8.in" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/8.out" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/9.in" create mode 100644 "exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/9.out" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/exercises.md" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/solution.java" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/1.in" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/1.out" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/10.in" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/10.out" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/2.in" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/2.out" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/3.in" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/3.out" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/4.in" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/4.out" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/5.in" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/5.out" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/6.in" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/6.out" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/7.in" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/7.out" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/8.in" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/8.out" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/9.in" create mode 100644 "exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/9.out" create mode 100644 "exercises/chenguangjian20230719/\351\235\236\347\274\226\347\250\213\351\242\230/\351\242\230\347\233\256.md" diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/exercies.md" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/exercies.md" new file mode 100644 index 0000000..986a4f3 --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/exercies.md" @@ -0,0 +1,28 @@ +# 正则匹配 + +给你一个字符串s和一个字符模式p,请你来原生实现一个支持 '.'和'*'的正则表达式匹配。 + +'.' 匹配任意单个字符 +'*' 匹配零个或多个前面的那一个元素 +所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。 + + +# 示例 + +## 示例 1 + +输入:s = "aa", p = "a" +输出:false +解释:"a" 无法匹配 "aa" 整个字符串。 + +## 示例 2 + +输入:s = "aa", p = "a*" +输出:true +解释:因为 '*' 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 'a'。因此,字符串 "aa" 可被视为 'a' 重复了一次。 + +## 示例3: + +输入:s = "ab", p = ".*" +输出:true +解释:".*" 表示可匹配零个或多个('*')任意字符('.')。 \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/solution.java" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/solution.java" new file mode 100644 index 0000000..d338973 --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/solution.java" @@ -0,0 +1,117 @@ + +import java.util.Scanner; + +class Main { + + public static void main(String[] args) { + + // 控制台输入 + Scanner scanner = new Scanner(System.in); + String s = scanner.nextLine(); + String p = scanner.nextLine(); + + scanner.close(); + // 调用方法 + boolean res = isMatch(s,p); + // 输出结果 + System.out.println(res); + + } + + /** + * + * @param s + * @param p + * @return + */ + public static boolean isMatch(String s, String p) { + int m = s.length(); + int n = p.length(); + + boolean[][] f = new boolean[m + 1][n + 1]; + f[0][0] = true; + for (int i = 0; i <= m; ++i) { + for (int j = 1; j <= n; ++j) { + if (p.charAt(j - 1) == '*') { + f[i][j] = f[i][j - 2]; + if (matches(s, p, i, j - 1)) { + f[i][j] = f[i][j] || f[i - 1][j]; + } + } else { + if (matches(s, p, i, j)) { + f[i][j] = f[i - 1][j - 1]; + } + } + } + } + return f[m][n]; + } + + public static boolean matches(String s, String p, int i, int j) { + if (i == 0) { + return false; + } + if (p.charAt(j - 1) == '.') { + return true; + } + return s.charAt(i - 1) == p.charAt(j - 1); + } +} + +/* + +1 +aa +a +false + +2 +aa +a* +true + +3 +ab +.* +true + +4 +abab +ab +false + +5 +abcabc +a.*c +true + +6 +123456 +123* +false + +7 +123456 +123.* +true + + + +8 +abcdef +a.*e +false + + +9 +abcdef +a.*f +true + + +10 +1234321 +1.*1 +true + + */ \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/1.in" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/1.in" new file mode 100644 index 0000000..c0f85ea --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/1.in" @@ -0,0 +1,2 @@ +aa +a \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/1.out" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/1.out" new file mode 100644 index 0000000..02e4a84 --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/1.out" @@ -0,0 +1 @@ +false \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/10.in" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/10.in" new file mode 100644 index 0000000..bd5c1fe --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/10.in" @@ -0,0 +1,2 @@ +1234321 +1.*1 \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/10.out" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/10.out" new file mode 100644 index 0000000..f32a580 --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/10.out" @@ -0,0 +1 @@ +true \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/2.in" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/2.in" new file mode 100644 index 0000000..8a3c086 --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/2.in" @@ -0,0 +1,2 @@ +aa +a* \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/2.out" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/2.out" new file mode 100644 index 0000000..f32a580 --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/2.out" @@ -0,0 +1 @@ +true \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/3.in" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/3.in" new file mode 100644 index 0000000..3845341 --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/3.in" @@ -0,0 +1,2 @@ +ab +.* \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/3.out" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/3.out" new file mode 100644 index 0000000..f32a580 --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/3.out" @@ -0,0 +1 @@ +true \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/4.in" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/4.in" new file mode 100644 index 0000000..5c4a71c --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/4.in" @@ -0,0 +1,2 @@ +abab +ab \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/4.out" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/4.out" new file mode 100644 index 0000000..02e4a84 --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/4.out" @@ -0,0 +1 @@ +false \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/5.in" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/5.in" new file mode 100644 index 0000000..aa3b427 --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/5.in" @@ -0,0 +1,2 @@ +abcabc +a.*c \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/5.out" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/5.out" new file mode 100644 index 0000000..f32a580 --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/5.out" @@ -0,0 +1 @@ +true \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/6.in" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/6.in" new file mode 100644 index 0000000..71aa49c --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/6.in" @@ -0,0 +1,2 @@ +123456 +123* \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/6.out" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/6.out" new file mode 100644 index 0000000..02e4a84 --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/6.out" @@ -0,0 +1 @@ +false \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/7.in" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/7.in" new file mode 100644 index 0000000..8977c55 --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/7.in" @@ -0,0 +1,2 @@ +123456 +123.* \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/7.out" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/7.out" new file mode 100644 index 0000000..f32a580 --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/7.out" @@ -0,0 +1 @@ +true \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/8.in" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/8.in" new file mode 100644 index 0000000..b3b1863 --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/8.in" @@ -0,0 +1,2 @@ +abcdef +a.*e \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/8.out" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/8.out" new file mode 100644 index 0000000..02e4a84 --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/8.out" @@ -0,0 +1 @@ +false \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/9.in" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/9.in" new file mode 100644 index 0000000..715aa50 --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/9.in" @@ -0,0 +1,2 @@ +abcdef +a.*f \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/9.out" "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/9.out" new file mode 100644 index 0000000..f32a580 --- /dev/null +++ "b/exercises/chenguangjian20230719/\344\270\255\347\255\211/\346\255\243\345\210\231\345\214\271\351\205\215/test_cases/9.out" @@ -0,0 +1 @@ +true \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/exercises.md" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/exercises.md" new file mode 100644 index 0000000..b8222e4 --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/exercises.md" @@ -0,0 +1,37 @@ +# 生命进化书 +小A有一本生命进化书,以一个树形结构记载了所有生物的演化过程。 +为了探索和记录其中的演化规律,小A提出了一种方法,可以以字符串的形式将其复刻下来,规则如下: +初始只有一个根节点,表示演化的起点,依次记录 01 字符串中的字符, +如果记录 0,则在当前节点下添加一个子节点,并将指针指向新添加的子节点; +如果记录 1,则将指针回退到当前节点的父节点处。 +现在需要应用上述的记录方法,复刻下它的演化过程。请返回能够复刻演化过程的字符串中, 字典序最小的 01 字符串; + + +注意:节点指针最终可以停在任何节点上,不一定要回到根节点。 + +## 输入描述 +parents[] 数组,其中,parents[i] 表示编号 i 节点的父节点编号(根节点的父节点为 -1)。 +## 输出描述 +返回能够复刻演化过程的字符串中, 字典序最小 的 01 字符串 + + +# 示例 +## 示例 1: + +输入:parents = [-1,0,0,2] + +输出:"00110" + +解释:共存在 2 种记录方案: +第 1 种方案为:0(记录编号 1 的节点) -> 1(回退至节点 0) -> 0(记录编号 2 的节点) -> 0((记录编号 3 的节点)) +第 2 种方案为:0(记录编号 2 的节点) -> 0(记录编号 3 的节点) -> 1(回退至节点 2) -> 1(回退至节点 0) -> 0(记录编号 1 的节点) +返回字典序更小的 "00110" + +## 示例 2: + +输入:parents = [-1,0,0,1,2,2] +输出:"00101100" + +提示: +1 <= parents.length <= 10^4 +-1 <= parents[i] < i (即父节点编号小于子节点) diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/solution.java" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/solution.java" new file mode 100644 index 0000000..375e012 --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/solution.java" @@ -0,0 +1,81 @@ + +import java.util.Scanner; + +import java.util.*; +import java.util.Arrays; + +class Main { + + static HashMap> child = new HashMap<>(); + + public static void main(String[] args) { + // 控制台输入 + Scanner scanner = new Scanner(System.in); + String numsStr = scanner.nextLine(); + + int[] nums = new int[]{}; + // 解析字符串,构造数组 + numsStr = numsStr.replaceAll(" ", ""); + + if (!"[]".equals(numsStr)) { + String[] numsStrArr = numsStr.replaceAll("\\[", "").replaceAll("\\]", "").split("\\,"); + nums = new int[numsStrArr.length]; + for (int i = 0; i < numsStrArr.length; i++) { + nums[i] = Integer.parseInt(numsStrArr[i].trim()); + } + } + + scanner.close(); + // 调用方法 + String res = evolutionaryRecord(nums); + // 输出结果 + System.out.println(res); + } + + /** + * [-1,0,0,2] + * 00110 + * + * [-1,0,0,1,2,2] + * 00101100 + * + * @param parents + * @return + */ + + public static String evolutionaryRecord(int[] parents) { + int n = parents.length; + if (n == 1) return ""; + for (int i = 0; i < n; i++) { + child.put(i, new ArrayList<>()); + if (parents[i] == -1) continue; + //子节点 + child.get(parents[i]).add(i); + } + StringBuilder sb = new StringBuilder(dfs(0)); + int end = 0; + for (int i = sb.length() - 1; i > 0; i--) { + if (sb.charAt(i) != '1') { + end = i; + break; + } + } + return sb.substring(0, end + 1); + } + + private static String dfs(int i) { + StringBuilder t = new StringBuilder(); + List path = new ArrayList<>(); + for (int x : child.get(i)) { + //加入路径 + path.add("0" + dfs(x) + "1"); + } + //排序 + Collections.sort(path); + for (String s : path) { + t.append(s); + } + return t.toString(); + } + +} diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/1.in" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/1.in" new file mode 100644 index 0000000..2d751a6 --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/1.in" @@ -0,0 +1 @@ +[-1,0,0,2] \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/1.out" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/1.out" new file mode 100644 index 0000000..ef54619 --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/1.out" @@ -0,0 +1 @@ +00110 \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/10.in" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/10.in" new file mode 100644 index 0000000..22bc543 --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/10.in" @@ -0,0 +1 @@ +[-1,0,1,1,0,4,5,5,3,2,7,7,8] \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/10.out" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/10.out" new file mode 100644 index 0000000..f6c908e --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/10.out" @@ -0,0 +1 @@ +000010110111000011100 \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/2.in" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/2.in" new file mode 100644 index 0000000..5b64e77 --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/2.in" @@ -0,0 +1 @@ +[-1,0,0,1,2,2] \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/2.out" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/2.out" new file mode 100644 index 0000000..11df60e --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/2.out" @@ -0,0 +1 @@ +00101100 \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/3.in" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/3.in" new file mode 100644 index 0000000..5d531df --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/3.in" @@ -0,0 +1 @@ +[-1,0,1,1,0,4] \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/3.out" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/3.out" new file mode 100644 index 0000000..11df60e --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/3.out" @@ -0,0 +1 @@ +00101100 \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/4.in" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/4.in" new file mode 100644 index 0000000..a42e531 --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/4.in" @@ -0,0 +1 @@ +[-1,0,1,1,0,4,5] \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/4.out" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/4.out" new file mode 100644 index 0000000..c86fdea --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/4.out" @@ -0,0 +1 @@ +0001110010 \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/5.in" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/5.in" new file mode 100644 index 0000000..0179b7b --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/5.in" @@ -0,0 +1 @@ +[-1,0,1,1,0,4,5,5] \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/5.out" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/5.out" new file mode 100644 index 0000000..424cacd --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/5.out" @@ -0,0 +1 @@ +000101110010 \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/6.in" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/6.in" new file mode 100644 index 0000000..a74e376 --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/6.in" @@ -0,0 +1 @@ +[-1,0,1,1,0,4,5,5,3] \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/6.out" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/6.out" new file mode 100644 index 0000000..0d270a5 --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/6.out" @@ -0,0 +1 @@ +00010111000110 \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/7.in" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/7.in" new file mode 100644 index 0000000..e8411fe --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/7.in" @@ -0,0 +1 @@ +[-1,0,1,1,0,4,5,5,3,2] \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/7.out" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/7.out" new file mode 100644 index 0000000..a39cd5b --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/7.out" @@ -0,0 +1 @@ +000101110001100 \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/8.in" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/8.in" new file mode 100644 index 0000000..1bd3f12 --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/8.in" @@ -0,0 +1 @@ +[-1,0,1,1,0,4,5,5,3,2,7] \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/8.out" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/8.out" new file mode 100644 index 0000000..c17b5ce --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/8.out" @@ -0,0 +1 @@ +00001101110001100 \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/9.in" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/9.in" new file mode 100644 index 0000000..0bbbd29 --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/9.in" @@ -0,0 +1 @@ +[-1,0,1,1,0,4,5,5,3,2,7,7] \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/9.out" "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/9.out" new file mode 100644 index 0000000..3079c81 --- /dev/null +++ "b/exercises/chenguangjian20230719/\345\233\260\351\232\276/\347\224\237\345\221\275\350\277\233\345\214\226\344\271\246/test_cases/9.out" @@ -0,0 +1 @@ +0000101101110001100 \ No newline at end of file diff --git "a/exercises/chenguangjian20230719/\351\235\236\347\274\226\347\250\213\351\242\230/\351\242\230\347\233\256.md" "b/exercises/chenguangjian20230719/\351\235\236\347\274\226\347\250\213\351\242\230/\351\242\230\347\233\256.md" new file mode 100644 index 0000000..285591a --- /dev/null +++ "b/exercises/chenguangjian20230719/\351\235\236\347\274\226\347\250\213\351\242\230/\351\242\230\347\233\256.md" @@ -0,0 +1,31 @@ +问题1:下列哪一项不是人工智能的主要研究领域? +A. 机器学习 +B. 自然语言处理 +C. 计算机视觉 +D. 数据库管理 +答案:D +解答说明:人工智能的主要研究领域包括机器学习、自然语言处理和计算机视觉等,而数据库管理是计算机科学的一个重要分支,但不属于人工智能的主要研究领域。 + +问题2:下列哪一项不是监督学习的特点? +A. 需要大量标注数据 +B. 通过反馈调整模型 +C. 无需人工干预 +D. 适用于分类和回归问题 +答案:C +解答说明:监督学习需要大量标注数据,通过反馈调整模型,适用于分类和回归问题。但是,监督学习需要人工进行数据标注,所以选项C不是监督学习的特点。 + +问题3:下列哪一项是深度学习的特点? +A. 无法处理大数据 +B. 无需特征工程 +C. 无法处理非结构化数据 +D. 无法处理高维数据 +答案:B +解答说明:深度学习的一个重要特点是可以自动从原始数据中学习特征,无需人工进行复杂的特征工程。 + +问题4:下列哪一项不是强化学习的特点? +A. 通过与环境的交互进行学习 +B. 无需预先知道环境的模型 +C. 无需反馈信号 +D. 适用于序列决策问题 +答案:C +解答说明:强化学习的特点包括通过与环境的交互进行学习,无需预先知道环境的模型,适用于序列决策问题。但是,强化学习需要通过反馈信号(奖励或惩罚)来调整策略,所以选项C不是强化学习的特点。 \ No newline at end of file -- GitLab