谁能检查我的解决方案?
如果字符串“ cat”和“ dog”在给定的字符串中出现相同的次数,我想返回true。有各种字符串,它们的“ cat”和“ dog”数目不同。
public boolean catDog(String str)
{
int catAnswer = 0;
int dogAnswer = 0;
int cat_Count = 0;
int dog_Count = 0;
for (int i=0; i< str.length()-1; i++)
{
String sub = str.substring(i, i+2);
if ((sub.equals("cat"))) cat_Count++;
if ((sub.equals("dog"))) dog_Count++;
catAnswer = cat_Count;
dogAnswer = dog_Count;
} //end for
if(dogAnswer == catAnswer ) {return true;}
// else
return (dogAnswer != catAnswer);
}
Run Code Online (Sandbox Code Playgroud)
更新:
如果我使用i + 3,则会收到错误代码Exception:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:7(行号:10)-因此,我使用i + 2(没有错误报告)
更改为i <str.length()-4可以得到全真响应,尽管某些测试字符串包含不相等数量的“ cat”和“ dog”标记
问题的症结在于,当各种字符串中存在“ cat”和“ dog”的可变数字时,响应要么全为真要么全为假 …