@@ -121,7 +121,10 @@ fn main() {
121
121
let source = template
122
122
. replace ( "__PROBLEM_TITLE__" , & problem. title )
123
123
. replace ( "__PROBLEM_DESC__" , & build_desc ( & problem. content ) )
124
- . replace ( "__PROBLEM_DEFAULT_CODE__" , & code. default_code )
124
+ . replace (
125
+ "__PROBLEM_DEFAULT_CODE__" ,
126
+ & insert_return_in_code ( & problem. return_type , & code. default_code ) ,
127
+ )
125
128
. replace ( "__PROBLEM_ID__" , & format ! ( "{}" , problem. question_id) )
126
129
. replace ( "__EXTRA_USE__" , & parse_extra_use ( & code. default_code ) ) ;
127
130
@@ -186,6 +189,48 @@ fn parse_extra_use(code: &str) -> String {
186
189
extra_use_line
187
190
}
188
191
192
+ fn insert_return_in_code ( return_type : & str , code : & str ) -> String {
193
+ let re = Regex :: new ( r"\{[ \n]+}" ) . unwrap ( ) ;
194
+ match return_type {
195
+ "ListNode" => re
196
+ . replace ( & code, "{\n Some(Box::new(ListNode::new(0)))\n }" )
197
+ . to_string ( ) ,
198
+ "ListNode[]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
199
+ "TreeNode" => re
200
+ . replace (
201
+ & code,
202
+ "{\n Some(Rc::new(RefCell::new(TreeNode::new(0))))\n }" ,
203
+ )
204
+ . to_string ( ) ,
205
+ "boolean" => re. replace ( & code, "{\n false\n }" ) . to_string ( ) ,
206
+ "character" => re. replace ( & code, "{\n '0'\n }" ) . to_string ( ) ,
207
+ "character[][]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
208
+ "double" => re. replace ( & code, "{\n 0f64\n }" ) . to_string ( ) ,
209
+ "double[]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
210
+ "int[]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
211
+ "integer" => re. replace ( & code, "{\n 0\n }" ) . to_string ( ) ,
212
+ "integer[]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
213
+ "integer[][]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
214
+ "list<String>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
215
+ "list<TreeNode>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
216
+ "list<boolean>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
217
+ "list<double>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
218
+ "list<integer>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
219
+ "list<list<integer>>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
220
+ "list<list<string>>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
221
+ "list<string>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
222
+ "null" => code. to_string ( ) ,
223
+ "string" => re
224
+ . replace ( & code, "{\n String::new()\n }" )
225
+ . to_string ( ) ,
226
+ "string[]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
227
+ "void" => code. to_string ( ) ,
228
+ "NestedInteger" => code. to_string ( ) ,
229
+ "Node" => code. to_string ( ) ,
230
+ _ => code. to_string ( ) ,
231
+ }
232
+ }
233
+
189
234
fn build_desc ( content : & str ) -> String {
190
235
// TODO: fix this shit
191
236
content
0 commit comments