当前位置: 首页 > 知识库问答 >
问题:

codingBat XYZMIDLE在其他测试中失败

尚阳炎
2023-03-14

这是我的任务:给定一个字符串,XYZ是否出现在字符串的中间?为了定义中间,我们将说“xyz”左右的字符数最多相差一个。

使用下面的代码可以查看其他用例中的问题描述和故障

xyzMiddle(“AAxyzBB”)→ 符合事实的

xyzMiddle(“AxyzBB”)→ 符合事实的

xyzMiddle(“AxyzBBB”)→ 错误的

我的解决方案如下。既然我看不出“其他测试”是什么,请帮我找出问题所在。我的方法是检查“y”是否出现在奇数或偶数字符串的中间。

public boolean xyzMiddle(String str) {
  if (str.indexOf("xyz") < 0) return false;
  int l = str.length();
  int m = l / 2;
  if (l % 2 != 0) {
   if (str.charAt(m) != 'y') return false;
  }
  else {
   if (str.charAt(m) != 'y' && str.charAt(m - 1) != 'y') return false;
  }
  return true; 
}

共有2个答案

卢宜然
2023-03-14
if(str.length() <3) return false;

   int ind = str.indexOf("xyz", str.length()/2 - 3) ;
   String first = str.substring(0, ind);
   String second = str.substring(ind+3);

  return (first.length() == second.length() || first.length() +1 == second.length() || first.length() == second.length() + 1);
云隐水
2023-03-14

您的解决方案的问题是,如果有问题的字符串具有奇数长度,您只需返回false。

这实际上是不正确的,此任务的pass用例可以按如下数学划分:

1)与xyz存在于中间,有一个字符串的长度x 1x的左边或右边。

将字符串xyz的长度取为3,总长度为:

(x)3(x 1)=2x4---

2)以 XYZ 存在于中间,在其左边或右边有长度为<代码> x <代码>的字符串。

再次将字符串长度xyz取为3,得出总长度为:

(x)3(x)=2x3---

因此,在这种情况下(最后一行代码),根据返回true的解决方案,您需要过滤掉当长度为奇数xyz不在中间的情况,如下所示:

if (!(str.substring((m - 1), m + 2).equals("xyz"))) 
   return false;

包括这一点,您的解决方案如下所示:

public boolean xyzMiddle(String str) {
  if (str.indexOf("xyz") < 0) return false;
  int l = str.length();
  int m = l / 2;
  if (l % 2 != 0) {
   if (!(str.substring((m - 1), m + 2).equals("xyz"))) 
   return false;
  }
  else {
   if (str.charAt(m) != 'y' && str.charAt(m - 1) != 'y') return false;
  }
  return true; 
}

现在它通过了codingBat的所有测试

 类似资料:
  • 我目前在一个项目中使用TestNG启动Selenium测试套件,并处理maven项目中所有结果的日志记录,该项目在Jenkins的工作中每晚运行。 当前,当一个测试失败了一个断言时,TestNG会杀死我们正在运行的所有东西,它不仅会使当前测试失败,还会继续运行套件中的其他测试。我不明白为什么TestNG不只是使当前的测试失败,然后启动剩余的尚未运行的测试。这使得TestNG在这一点上成为一个无用的

  • 问题内容: 我正在使用 Junit 通过 Seleniun WebDriver 运行测试。我试图将测试分成功能区域,以更好地报告错误。我创建了测试以测试页面加载/将文档移动到其他工作流程。如果页面加载测试失败,或者工作流移动失败,我想跳过后续的页面/工作流测试。 如果测试A失败,如何跳过班级中的其余测试或在班级B中运行测试? 注意: 我意识到我要问的是“ UNIT TESTS的 不良实践* 。但是

  • 需要一些非常具体的包装器和例程。

  • 除了个别的测试驱动和行为驱动框架之外,还有一些通用的框架和辅助函数类库,对任何的测试方法都很有用。 工具地址 Selenium 是一个浏览器自动化工具 integrated with PHPUnit Mockery 是一个可以跟 PHPUnit 或者 PHPSpec 整合的 Mock 对象框架 Prophecy 是个有自己的想法,且非常强大灵活的 PHP 对象 mocking 框架。它整合了 PH

  • 我正在使用PowerMock测试中断异常情况下的错误处理。不幸的是,这些测试有时似乎对其他测试类有一些副作用:我在一个测试类中配置的模拟似乎在另一个测试类中仍然存在。为了产生副作用,我将下面的示例简化为基本行。 让我们假设我们有一个类要测试: 以及一个使用PowerMock测试私有方法的测试类: 当我现在创建另一个测试类(在第一个测试类之后执行)时,如下所示: 我立即得到以下异常: 如果我在第一节

  • 我正在尝试创建一个名为<code>AuditScope<code>的自定义范围类,通过<code>AuditScope.current<code>可以访问当前范围。 如果有嵌套的作用域,则当前作用域是嵌套最多的作用域。 我希望这是线程安全的,所以我使用来确保当前范围属于当前异步上下文,并且不会与其他请求发生冲突。如果你们有人遇到过,这类似于类。 下面是我的作用域类: 我的所有测试都单独通过,但是如