网站建设新闻 常识永久免费云服务器推荐
2026/4/3 17:18:57 网站建设 项目流程
网站建设新闻 常识,永久免费云服务器推荐,佛山搜索引擎优化,温州有没有做鞋的网站最新华为OD机试 真题目录#xff1a;点击查看目录 华为OD面试真题精选#xff1a;点击立即查看 华为OD机考双机位C卷 - 寻找密码 题目描述 小王在进行游戏大闯关#xff0c;有一个关卡需要输入一个密码才能通过#xff0c;密码获得的条件如下#xff1a; 在一个密码…最新华为OD机试真题目录点击查看目录华为OD面试真题精选点击立即查看华为OD机考双机位C卷 - 寻找密码题目描述小王在进行游戏大闯关有一个关卡需要输入一个密码才能通过密码获得的条件如下在一个密码本中每一页都有一个由26个小写字母组成的若干位密码每一页的密码不同需要从这个密码本中寻找这样一个最长的密码从它的末尾开始依次去掉一位得到的新密码也在密码本中存在。请输出符合要求的密码如果有多个符合要求的密码则返回字典序最大的密码。若没有符合要求的密码则返回空字符串。输入描述密码本由一个字符串数组组成不同元素之间使用空格隔开每一个元素代表密码本每一页的密码。输出描述一个字符串用例输入h he hel hell hello输出hello说明无输入b ereddred bw bww bwwl bwwlm bwwln输出bwwln说明无题目解析与【华为OD机试 2023】真正的密码C Java JavaScript Python类似解题思路这个问题的解题思路可以分为以下几个步骤输入处理首先从输入中读取密码本并将其分割为一个字符串列表。这个列表包含了密码本中的所有密码。遍历密码本接下来遍历密码本中的每个密码。对于每个密码我们需要检查它是否满足题目中的条件。检查密码是否有效为了检查一个密码是否有效我们需要从它的末尾开始依次去掉一位得到一个新的密码。然后我们需要检查这个新密码是否在密码本中存在。如果所有这些新密码都在密码本中存在那么这个密码就是有效的。否则这个密码是无效的。为了实现这个检查过程我们可以使用一个循环从密码的末尾开始依次去掉一位。在每次循环中我们检查新密码是否在密码本中。如果发现新密码不在密码本中我们可以将一个布尔变量例如is_valid设置为False并跳出循环。这样循环结束后is_valid变量的值就表示当前密码是否有效。收集有效密码在遍历密码本的过程中每当我们发现一个有效的密码就将其添加到一个新的列表例如valid_passwords中。这个列表用于存储所有有效的密码。排序有效密码遍历密码本并收集有效密码之后我们需要对valid_passwords列表进行排序。题目要求返回字典序最大的密码所以我们需要对列表进行降序排序。这样字典序最大的密码就会排在列表的第一个位置。输出结果最后我们需要输出结果。如果valid_passwords列表非空说明至少有一个有效的密码。此时我们可以输出列表中的第一个密码即字典序最大的密码。如果列表为空说明没有符合条件的密码此时我们需要输出空字符串。C#includeiostream#includevector#includealgorithmusing namespace std;intmain(){string input;getline(cin,input);// 读取输入的密码本vectorstringpasswordList;size_tpos0;string delimiter ;while((posinput.find(delimiter))!string::npos){string passwordinput.substr(0,pos);passwordList.push_back(password);input.erase(0,posdelimiter.length());}passwordList.push_back(input);// 创建一个列表来存储符合条件的密码vectorstringvalidPasswords;// 遍历密码本中的每个密码for(string password:passwordList){// 假设当前密码是有效的bool isValidtrue;// 从密码的末尾开始逐位去掉判断新密码是否在密码本中存在for(intipassword.length()-1;i0;i--){// 如果新密码不在密码本中存在则当前密码不符合条件退出循环if(find(passwordList.begin(),passwordList.end(),password.substr(0,i))passwordList.end()){isValidfalse;break;}}// 如果当前密码符合条件则将其添加到有效密码列表中if(isValid){validPasswords.push_back(password);}}// 对有效密码列表进行字典序降序排序sort(validPasswords.begin(),validPasswords.end(),greaterstring());// 输出符合条件的密码列表中的第一个密码如果列表为空则输出空字符串cout(validPasswords.size()!0?validPasswords[0]:)endl;return0;}JavaScriptconstreadlinerequire(readline);constrlreadline.createInterface({input:process.stdin,output:process.stdout});rl.on(line,(passwords){// 读取输入的密码本constpasswordListpasswords.split( );// 创建一个列表来存储符合条件的密码constvalidPasswords[];// 遍历密码本中的每个密码for(constpasswordofpasswordList){// 假设当前密码是有效的letisValidtrue;// 从密码的末尾开始逐位去掉判断新密码是否在密码本中存在for(letipassword.length-1;i0;i--){// 如果新密码不在密码本中存在则当前密码不符合条件退出循环if(!passwordList.includes(password.substring(0,i))){isValidfalse;break;}}// 如果当前密码符合条件则将其添加到有效密码列表中if(isValid){validPasswords.push(password);}}// 对有效密码列表进行字典序降序排序validPasswords.sort((a,b)b.localeCompare(a));// 输出符合条件的密码列表中的第一个密码如果列表为空则输出空字符串console.log(validPasswords.length!0?validPasswords[0]:);rl.close();});Javaimportjava.util.ArrayList;importjava.util.Arrays;importjava.util.Collections;importjava.util.List;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){ScannerscannernewScanner(System.in);// 读取输入的密码本String[]passwordListscanner.nextLine().split( );// 创建一个列表来存储符合条件的密码ListStringvalidPasswordsnewArrayList();// 遍历密码本中的每个密码for(Stringpassword:passwordList){// 假设当前密码是有效的booleanisValidtrue;// 从密码的末尾开始逐位去掉判断新密码是否在密码本中存在for(intipassword.length()-1;i0;i--){// 如果新密码不在密码本中存在则当前密码不符合条件退出循环if(!Arrays.asList(passwordList).contains(password.substring(0,i))){isValidfalse;break;}}// 如果当前密码符合条件则将其添加到有效密码列表中if(isValid){validPasswords.add(password);}}// 对有效密码列表进行字典序降序排序Collections.sort(validPasswords,Collections.reverseOrder());// 输出符合条件的密码列表中的第一个密码如果列表为空则输出空字符串System.out.println(validPasswords.size()!0?validPasswords.get(0):);}}Python# 从输入中读取密码本将其分割为一个字符串列表password_listinput().split( )# 初始化一个空列表用于存储有效密码valid_passwords[]# 遍历密码本中的每个密码forpasswordinpassword_list:# 初始化一个布尔变量表示当前密码是否有效is_validTrue# 从密码的末尾开始依次去掉一位检查新密码是否在密码本中存在foriinrange(len(password)-1,0,-1):# 如果新密码不在密码本中将 is_valid 设为 False 并跳出循环ifpassword[:i]notinpassword_list:is_validFalsebreak# 如果当前密码有效将其添加到 valid_passwords 列表中ifis_valid:valid_passwords.append(password)# 对有效密码列表进行降序排序使字典序最大的密码排在最前面valid_passwords.sort(reverseTrue)# 如果有效密码列表非空则输出第一个密码字典序最大的密码否则输出空字符串print(valid_passwords[0]ifvalid_passwordselse)Gopackagemainimport(bufiofmtossortstrings)funcmain(){// 1. 读取输入scanner:bufio.NewScanner(os.Stdin)// 设置缓冲区大小防止输入过长导致溢出可选视题目数据范围而定buf:make([]byte,1024*1024)scanner.Buffer(buf,1024*1024)if!scanner.Scan(){return}line:scanner.Text()// 按空格分割字符串passwordList:strings.Split(line, )// 2. 制作哈希表Map以便快速查找// Python中 in list 是 O(N)Go中使用 map 是 O(1)pwMap:make(map[string]bool)for_,pwd:rangepasswordList{pwMap[pwd]true}varvalidPasswords[]string// 3. 遍历每个密码for_,password:rangepasswordList{isValid:true// 对应 Python: for i in range(len(password)-1, 0, -1)// 检查从 len-1 到 1 的所有前缀fori:len(password)-1;i0;i--{sub:password[:i]// 如果前缀不在 map 中则无效if!pwMap[sub]{isValidfalsebreak}}// 如果有效加入结果集ifisValid{validPasswordsappend(validPasswords,password)}}// 4. 排序// Python: sort(reverseTrue) - 降序字典序大的在前sort.Slice(validPasswords,func(i,jint)bool{returnvalidPasswords[i]validPasswords[j]})// 5. 输出iflen(validPasswords)0{fmt.Println(validPasswords[0])}else{fmt.Println()}}完整用例用例1a ab abc abcd用例2b ereddred bw bww bwwl bwwlm bwwln用例3a用例4abc def ghi用例5a bc def用例6a ab abc abcd ab abcd用例7a ab abc abcd xy xya xya用例8a abc ab abcd用例9g f e d c b a用例10a ab ac ad ae af ag

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询