@@ -121,7 +121,10 @@ fn main() {
121121 let source = template
122122 . replace ( "__PROBLEM_TITLE__" , & problem. title )
123123 . 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+ )
125128 . replace ( "__PROBLEM_ID__" , & format ! ( "{}" , problem. question_id) )
126129 . replace ( "__EXTRA_USE__" , & parse_extra_use ( & code. default_code ) ) ;
127130
@@ -186,6 +189,48 @@ fn parse_extra_use(code: &str) -> String {
186189 extra_use_line
187190}
188191
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+
189234fn build_desc ( content : & str ) -> String {
190235 // TODO: fix this shit
191236 content
0 commit comments