java - codingBat 问题:如果对于字符串中的每个 '*'(星号),则返回 true
问题描述
我正在研究这个codingbat问题:如果对于字符串中的每个'*'(星号),如果在星号之前和之后都有字符,则返回true,它们是相同的。例子:
sameStarChar("xy*yzz") → true
sameStarChar("xy*zzz") → false
sameStarChar("*xa*az") → true
我的第一次代码尝试是:
public boolean sameStarChar(String str) {
//boolean flag = false;
for(int i =1;i< str.length()-1; i++){
if(str.charAt(i) == '*' && str.charAt(i-1) == str.charAt(i+1)){
return true;
}
}
return false;
}
并且没有通过几个案例:sameStarChar("12*2*3*") → false ,sameStarChar("XY YYYY Z*") → false。
但是,如果将代码更改为:
public boolean sameStarChar(String str) {
//boolean flag = false;
for(int i =1;i< str.length()-1; i++){
if(str.charAt(i) == '*' && str.charAt(i-1) != str.charAt(i+1)){
return false;
}
}
return true;
}
结果得到纠正。我不明白我的第一次尝试有什么问题。
解决方案
您的第一次尝试有两个问题:
- 它没有考虑完全不包含任何星号的字符串的情况,循环将运行到完成,然后
false
将错误地返回。 - 它错误地返回
true
星号的第一对匹配的邻居,而不管后面可能有任何不匹配的对。
推荐阅读
- windows - Windows 10 上的 ampeventmanager41 是什么?
- python - ValueError: 未能找到可以处理的数据适配器
- java - 弹簧性能测试期间发生崩溃
- google-cloud-api-gateway - 如何使用 API Gateway 验证范围?
- machine-learning -
运行中:无法解析 IO 错误类型为 13 的传入对象 - python - 如何在设定值周围插入带有填充/边界的信号?〜Python,熊猫,scipy.interpolate
- javascript - 模糊侦听器的回调无法识别状态值
- python - 得到误报,误报,......带有混乱包的指标
- c# - 通用渲染管道 - 尽管在质量设置中分配了 URP 资产,但相机错误
- google-apps-script - 新的 Google Drive 资源关键要求是否会影响 Google Apps 对电子表格的访问