Skip to content

Commit 8a5e197

Browse files
JavaScalaDeveloperJavaScalaDeveloper
authored andcommitted
导出pdf
1 parent 5149921 commit 8a5e197

File tree

194 files changed

+420868
-17256
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

194 files changed

+420868
-17256
lines changed

change/easy-v2023.pdf

Whitespace-only changes.

change/hard-v2023-v2.pdf

Whitespace-only changes.

change/hard-v2023.pdf

Whitespace-only changes.

change/scripts/MergeMdFiles.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ public class MergeMdFiles {
66

77
public static void main(String[] args) throws IOException {
88
String directory = "D:\\WorkSpaces\\leetcode-all\\solution"; // 修改为目录路径
9-
String outputFile = "D:\\WorkSpaces\\leetcode-all\\change\\scripts\\out\\output-file.md"; // 修改为输出文件路径
9+
String outputFile = "D:\\WorkSpaces\\leetcode-all\\change\\scripts\\out\\leetcode-1~2000-v2023.md"; // 修改为输出文件路径
1010

1111
File dir = new File(directory);
1212
if (!dir.exists() || !dir.isDirectory()) {
@@ -25,9 +25,18 @@ private static void mergeMdFiles(File dir, OutputStream os) throws IOException {
2525
if (file.isDirectory()) {
2626
mergeMdFiles(file, os);
2727
} else if (file.isFile() && file.getName().endsWith(".md")) {
28-
FileInputStream fis = new FileInputStream(file);
29-
copy(fis, os);
30-
fis.close();
28+
// 忽略solution根目录的文件
29+
if (file.getPath().length() > 60) {
30+
String num = file.getPath().substring(46, 50);
31+
int no = Integer.parseInt(num);
32+
// 导出前2000道
33+
if (no <= 2000) {
34+
FileInputStream fis = new FileInputStream(file);
35+
copy(fis, os);
36+
fis.close();
37+
}
38+
39+
}
3140
}
3241
}
3342
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package change.scripts;
2+
3+
import java.io.*;
4+
import java.nio.file.Files;
5+
import java.nio.file.attribute.BasicFileAttributes;
6+
import java.util.HashMap;
7+
import java.util.Map;
8+
import java.util.stream.Collectors;
9+
10+
public class MergeMdFilesByLevel {
11+
private static final String OUTPUT_PATH = "D:\\WorkSpaces\\leetcode-all\\change\\scripts\\out\\"; // 修改为输出文件路径
12+
//题号->难度
13+
private static final Map<String, String> num2LevelMap = ParseMenu.getLineData().stream()
14+
.collect(Collectors.toMap(ParseMenu.LineData::getA, ParseMenu.LineData::getD));
15+
16+
public static void main(String[] args) throws IOException {
17+
String directory = "D:\\WorkSpaces\\leetcode-all\\solution"; // 修改为目录路径
18+
19+
File dir = new File(directory);
20+
if (!dir.exists() || !dir.isDirectory()) {
21+
System.out.println("目录不存在或者不是一个目录");
22+
return;
23+
}
24+
Map<String, FileOutputStream> fileOutputStreamsMap = new HashMap<>();
25+
// 中等, 困难, 简单
26+
fileOutputStreamsMap.put("简单", new FileOutputStream(OUTPUT_PATH + "easy-v2023.md"));
27+
fileOutputStreamsMap.put("中等", new FileOutputStream(OUTPUT_PATH + "medium-v2023.md"));
28+
fileOutputStreamsMap.put("困难", new FileOutputStream(OUTPUT_PATH + "hard-v2023.md"));
29+
30+
mergeMdFiles(dir, fileOutputStreamsMap);
31+
fileOutputStreamsMap.forEach((s, fileOutputStream) -> {
32+
try {
33+
fileOutputStream.close();
34+
} catch (IOException e) {
35+
throw new RuntimeException(e);
36+
}
37+
});
38+
}
39+
40+
private static void mergeMdFiles(File dir, Map<String, FileOutputStream> fileOutputStreamsMap) throws IOException {
41+
File[] files = dir.listFiles();
42+
assert files != null;
43+
for (File file : files) {
44+
BasicFileAttributes basicFileAttributes = Files.readAttributes(file.toPath(), BasicFileAttributes.class);
45+
if (basicFileAttributes.isDirectory()) {
46+
mergeMdFiles(file, fileOutputStreamsMap);
47+
} else if (basicFileAttributes.isRegularFile() && file.getName().endsWith(".md")) {
48+
FileInputStream fis = new FileInputStream(file);
49+
String path = file.getPath();
50+
if (path.length() > 50) {
51+
// 题号
52+
String num = path.substring(46, 50);
53+
// 难度
54+
String level = num2LevelMap.get(num);
55+
FileOutputStream os = fileOutputStreamsMap.get(level);
56+
if (os != null) {
57+
System.out.println(num + "-->" + level);
58+
copy(fis, os);
59+
}
60+
}
61+
fis.close();
62+
}
63+
}
64+
}
65+
66+
private static void copy(InputStream is, OutputStream os) throws IOException {
67+
byte[] buffer = new byte[4096];
68+
int len;
69+
while ((len = is.read(buffer)) != -1) {
70+
os.write(buffer, 0, len);
71+
}
72+
}
73+
74+
}

change/scripts/ParseMenu.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,26 @@
99
import java.util.ArrayList;
1010
import java.util.List;
1111
import java.util.Map;
12+
import java.util.Set;
1213
import java.util.stream.Collectors;
1314

1415
public class ParseMenu {
1516
public static void main(String[] args) {
16-
List<String> lines = readLines("change/scripts/input/menu.txt");
17-
List<LineData> lineData = parseLines(lines);
17+
List<LineData> lineData = getLineData();
1818
Map<String, String> num2LevelMap = lineData.stream().collect(Collectors.toMap(LineData::getA, LineData::getD));
1919
System.out.println(num2LevelMap);
2020
Map<String, List<LineData>> collect = lineData.stream().collect(Collectors.groupingBy(LineData::getD));
21+
Set<String> levelSet = lineData.stream().map(LineData::getD).collect(Collectors.toSet());
22+
System.out.println(levelSet);
2123
// System.out.println(collect);
2224
}
2325

24-
private static class LineData {
26+
public static List<LineData> getLineData() {
27+
List<String> lines = readLines("change/scripts/input/menu.txt");
28+
return parseLines(lines);
29+
}
30+
31+
public static class LineData {
2532
private String a;
2633
private String b;
2734
private String c;

0 commit comments

Comments
 (0)