@@ -5,12 +5,12 @@ extern crate serde_json;
5
5
6
6
mod problem;
7
7
8
+ use regex:: Regex ;
8
9
use std:: env;
9
10
use std:: fs;
10
11
use std:: io;
11
12
use std:: io:: Write ;
12
13
use std:: path:: Path ;
13
- use regex:: Regex ;
14
14
15
15
/// main() helps to generate the submission template .rs
16
16
fn main ( ) {
@@ -75,7 +75,10 @@ fn main() {
75
75
let source = template
76
76
. replace ( "__PROBLEM_TITLE__" , & problem. title )
77
77
. replace ( "__PROBLEM_DESC__" , & build_desc ( & problem. content ) )
78
- . replace ( "__PROBLEM_DEFAULT_CODE__" , & insert_return_in_code ( & problem. return_type , & code. default_code ) )
78
+ . replace (
79
+ "__PROBLEM_DEFAULT_CODE__" ,
80
+ & insert_return_in_code ( & problem. return_type , & code. default_code ) ,
81
+ )
79
82
. replace ( "__PROBLEM_ID__" , & format ! ( "{}" , problem. question_id) )
80
83
. replace ( "__EXTRA_USE__" , & parse_extra_use ( & code. default_code ) ) ;
81
84
@@ -149,12 +152,44 @@ fn parse_extra_use(code: &str) -> String {
149
152
}
150
153
151
154
fn insert_return_in_code ( return_type : & str , code : & str ) -> String {
155
+ let re = Regex :: new ( r"\{[ \n]+}" ) . unwrap ( ) ;
152
156
match return_type {
153
- "ListNode" => {
154
- let re = Regex :: new ( r"\{[ \n]+}" ) . unwrap ( ) ;
155
- re. replace ( & code, "{\n Some(Box::new(ListNode::new(0)))\n }" ) . to_string ( )
156
- } ,
157
- _ => code. to_string ( )
157
+ "ListNode" => re
158
+ . replace ( & code, "{\n Some(Box::new(ListNode::new(0)))\n }" )
159
+ . to_string ( ) ,
160
+ "ListNode[]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
161
+ "TreeNode" => re
162
+ . replace (
163
+ & code,
164
+ "{\n Some(Rc::new(RefCell::new(TreeNode::new(0))))\n }" ,
165
+ )
166
+ . to_string ( ) ,
167
+ "boolean" => re. replace ( & code, "{\n false\n }" ) . to_string ( ) ,
168
+ "character" => re. replace ( & code, "{\n '0'\n }" ) . to_string ( ) ,
169
+ "character[][]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
170
+ "double" => re. replace ( & code, "{\n 0f64\n }" ) . to_string ( ) ,
171
+ "double[]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
172
+ "int[]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
173
+ "integer" => re. replace ( & code, "{\n 0\n }" ) . to_string ( ) ,
174
+ "integer[]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
175
+ "integer[][]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
176
+ "list<String>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
177
+ "list<TreeNode>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
178
+ "list<boolean>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
179
+ "list<double>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
180
+ "list<integer>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
181
+ "list<list<integer>>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
182
+ "list<list<string>>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
183
+ "list<string>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
184
+ "null" => code. to_string ( ) ,
185
+ "string" => re
186
+ . replace ( & code, "{\n String::new()\n }" )
187
+ . to_string ( ) ,
188
+ "string[]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
189
+ "void" => code. to_string ( ) ,
190
+ "NestedInteger" => code. to_string ( ) ,
191
+ "Node" => code. to_string ( ) ,
192
+ _ => code. to_string ( ) ,
158
193
}
159
194
}
160
195
0 commit comments