蔚来笔试真题-洞穴寻路(C++/Py/Java /Js/Go)
洞穴寻路蔚来技术岗 8月17号笔试 第二题题目内容探险队沿洞穴石室寻路按进入顺序走过mmm间石室第iii间石室壁上有一条铭文链表CiC_iCi​i1,2,…,mi1,2,\ldots,mi1,2,…,m节点为铭文编号。出洞时须把沿途铭文收成一条链表带回地面收纳顺序为后进先出先接最后一间的CmC_mCm​再接Cm−1C_{m-1}Cm−1​直到最先进入的C1C_1C1​每一间内部铭文的先后不变。空石室没有铭文。请给出带回地面的那条链表。输入描述读入一行表示这mmm条链表形态为[{x,y,...},{...},...]。每条链表用花括号按节点顺序列出整型值彼此以逗号分隔空链表写成{}。1≤m≤2500001 \le m \le 2500001≤m≤250000全部节点个数之和不超过250000250000250000节点值为111到100000000010000000001000000000的正整型。请对这一行输入计算拼接结果。输出描述写出一行即拼接后的链表形态为{...}若没有任何节点写出{}。示例 1输入[{4,5},{9},{1,1,2}]输出{1,1,2,9,4,5}说明三间石室的铭文依次为{4,5}\{4,5\}{4,5}、{9}\{9\}{9}、{1,1,2}\{1,1,2\}{1,1,2}。出洞后进先出先接{1,1,2}\{1,1,2\}{1,1,2}再接{9}\{9\}{9}再接{4,5}\{4,5\}{4,5}。各条内部顺序不改。示例 2输入[{8},{},{2,2}]输出{2,2,8}说明中间一间是空石室回程时直接跳过结果由{2,2}\{2,2\}{2,2}再接{8}\{8\}{8}得到。思路字符串处理题将输入字符串进行如下处理去除左边第一个[ 和最后一个]去除左边第一个{ 和最后一个}将字符串按照},{进行切割输出输出{从后往前输出切割后每个链表片段多个之间使用,分割输出}C#includebits/stdc.husingnamespacestd;// 通用 切割函数 函数 将字符串str根据delimiter进行切割vectorstringsplit(conststringstr,conststringdelimiter){vectorstringresult;size_t start0;size_t endstr.find(delimiter);while(end!string::npos){result.push_back(str.substr(start,end-start));startenddelimiter.length();endstr.find(delimiter,start);}// 添加最后一个部分result.push_back(str.substr(start));returnresult;}intmain(){string input;getline(cin,input);// 去除左边第一个[ 和最后一个]inputinput.substr(1,input.size()-2);// 去除左边第一个{ 和最后一个}inputinput.substr(1,input.size()-2);vectorstringpartsplit(input,},{);vectorstringans;for(intipart.size()-1;i0;i--){if(part[i].empty()){continue;}ans.push_back(part[i]);}// 输出结果cout{;for(inti0;ians.size();i){if(i0){cout,;}coutans[i];}cout};}javaimportjava.io.*;importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args)throwsException{BufferedReaderbrnewBufferedReader(newInputStreamReader(System.in));Stringinputbr.readLine();// 去除左边第一个[ 和最后一个]inputinput.substring(1,input.length()-1);// 去除左边第一个{ 和最后一个}inputinput.substring(1,input.length()-1);String[]partinput.split(\\},\\{);ListStringansnewArrayList();for(intipart.length-1;i0;i--){if(part[i].isEmpty()){continue;}ans.add(part[i]);}// 输出结果System.out.print({);for(inti0;ians.size();i){if(i0){System.out.print(,);}System.out.print(ans.get(i));}System.out.print(});}}pythoninput_strinput()# 去除左边第一个[ 和最后一个]input_strinput_str[1:-1]# 去除左边第一个{ 和最后一个}input_strinput_str[1:-1]partinput_str.split(},{)ans[]foriinrange(len(part)-1,-1,-1):ifnotpart[i]:continueans.append(part[i])# 输出结果print({,end)foriinrange(len(ans)):ifi0:print(,,end)print(ans[i],end)print(})javascriptconstreadlinerequire(readline);constrlreadline.createInterface({input:process.stdin,output:process.stdout});rl.on(line,(input){// 去除左边第一个[ 和最后一个]inputinput.substring(1,input.length-1);// 去除左边第一个{ 和最后一个}inputinput.substring(1,input.length-1);constpartinput.split(},{);constans[];for(letipart.length-1;i0;i--){if(part[i]){continue;}ans.push(part[i]);}// 输出结果process.stdout.write({);for(leti0;ians.length;i){if(i0){process.stdout.write(,);}process.stdout.write(ans[i]);}process.stdout.write(});});Gopackagemainimport(bufiofmtosstrings)funcmain(){in:bufio.NewReader(os.Stdin)input,_:in.ReadString(\n)inputstrings.TrimSpace(input)// 去除左边第一个[ 和最后一个]inputinput[1:len(input)-1]// 去除左边第一个{ 和最后一个}inputinput[1:len(input)-1]part:strings.Split(input,},{)ans:make([]string,0)fori:len(part)-1;i0;i--{ifpart[i]{continue}ansappend(ans,part[i])}// 输出结果out:bufio.NewWriter(os.Stdout)deferout.Flush()fmt.Fprint(out,{)fori:0;ilen(ans);i{ifi0{fmt.Fprint(out,,)}fmt.Fprint(out,ans[i])}fmt.Fprint(out,})}

相关新闻

最新新闻

日新闻

周新闻

月新闻