【发布时间】:2020-06-12 11:55:13
【问题描述】:
我要解决的编码问题是这样的。我试图解决但不是所有的测试用例都通过了我无法找到可能是什么原因?
识别可能的单词:Bakshi 侦探在解决案件时偶然发现了一个字母,其中包含许多单词,其中一个字符缺失,即单词中的一个字符被下划线替换。例如“Fi_er”。他还发现了薄纸条,上面有一组用冒号分隔的单词,例如。 “发烧:过滤器:过滤器:固定器:纤维:纤维:裁缝:报价”。他能从那张薄纸上判断出少了一个字的单词是其中一个可能的单词。侦探 Bakshi 找到您(计算机程序员)寻求帮助,以识别每个不完整单词的可能单词。
您应该编写一个函数来识别可能的单词集。 函数 identifyPossibleWords 将两个字符串作为输入 哪里,
input1 包含不完整的单词,并且 input2 是包含一组用冒号分隔的单词的字符串。
该函数期望从 input2 中找到所有可以替换不完整单词 input1 的可能单词,并以下面建议的格式返回结果。
示例 1 -
input1 = “Fi_er” input2 = “Fever:filer:Filter:Fixer:fiber:fiber:tailor:offer”
输出字符串应返回为“FILER:FIXER:FIBER” 请注意——
输出字符串应该包含可以替换输入1中不完整单词的所有可能单词的集合 输出字符串中的所有单词都应以大写形式存储 输出字符串中的所有单词都应该按照它们在 input2 中出现的顺序出现,即在上面的示例中,我们有 FILER 后接 FIXER 后接 FIBER。 在 input2 中搜索 input1 时,忽略字母的大小写,即“Fi_er”与“filer”以及“Fixer”和“fiber”匹配。 重要提示:如果 input2 中没有任何单词可以替代 input1,则输出字符串应包含字符串“ERROR-009” 假设:
Input1 将只包含一个单词,其中只有一个字符被下划线“_”替换 Input2 将包含一系列由冒号分隔的单词,中间没有空格字符 Input2 将不包含除下划线和字母字符以外的任何其他特殊字符。
我对这个问题的解决方案是:
import java.io.*;
import java.util.*;
class UserMaincode
{
public String indentifyPossibleWords(String input1, String input2)
{
input1=input1.toUpperCase();
input2=input2.toUpperCase();
String arr1[]=input1.split("_");
String arr2[]=input2.split(":");
StringBuilder sb=new StringBuilder("");
for(int i=0;i<arr2.length;i++){
if(arr2[i].matches(arr1[0]+"."+arr1[1])){
sb.append(arr2[i]+":");
}
}
if(sb.length()!=0){
sb.deleteCharAt(sb.length()-1);
}
String s=sb.toString();
if(s==""){
return "ERROR-009";
}
return s;
}
}
但是一些隐藏的测试用例没有通过。问题可能出在哪里。
我从网上找到了一个通过所有测试用例的代码。请参考此链接。
https://www.csinfo360.com/2020/01/cracking-coding-interview-step-11.html
【问题讨论】:
-
对于一个可能很简单的问题来说,这(至少对我来说)文本太多了。您说测试用例不起作用 - 所以请提供测试用例:输入、预期输出和代码输出。也许那时我们可以告诉你,为什么你的代码没有产生预期的结果。
-
OP 可能无权访问失败的测试用例 - 这在代码挑战网站上很常见,其中说明了问题并给出了一个或两个特定示例,但挑战是编写一个完全回答问题陈述的解决方案。它迫使回答者考虑可能的极端情况并在他们的代码中处理它们。
-
我已经提到测试用例是隐藏的。所以我不能放它们,因为我不认识它们。 @TomStroemer
标签: java regex string stringbuilder testcase