Java 用于条件反射和字符串匹配
给定两个字符串a和b,返回它们包含相同长度2子字符串的位置数。因此Java 用于条件反射和字符串匹配,java,loops,Java,Loops,给定两个字符串a和b,返回它们包含相同长度2子字符串的位置数。因此“xxcaazz”和“xxbaaz”产生3,因为“xx”、“aa”和“az”子字符串出现在两个字符串的同一位置 我的代码:为某些输入抛出一个索引outofboundsexception public int stringMatch(String a, String b) { int count=0; for(int i=0;i<a.length()-1;i++){ if(a.ch
“xxcaazz”
和“xxbaaz”
产生3,因为“xx”
、“aa”
和“az”
子字符串出现在两个字符串的同一位置
我的代码:为某些输入抛出一个索引outofboundsexception
public int stringMatch(String a, String b) {
int count=0;
for(int i=0;i<a.length()-1;i++){
if(a.charAt(i)==b.charAt(i))
if (a.charAt(i+1)==b.charAt(i+1)){
count +=1;
}
}
return count;
}
public int stringMatch(字符串a、字符串b){
整数计数=0;
对于(int i=0;i
这将避免出现索引自动边界异常
您可以用另一种方法来检查a和b的长度:
for(int i=1;i < Math.min(a.length(), b.length);i++){
if(a.charAt(i-1)==b.charAt(i-1))
if (a.charAt(i)==b.charAt(i)){
count +=1;
}
}
for(inti=1;i
这将不会为类似“a”
的字符串进入循环,因为长度1不小于1,它将循环限制为最短的字符串。或使用int minLength=Math.min(a.length,b.length)
,并使用i
。for循环不应该是i@iskandarchacra否,因为循环体使用a.charAt(i+1)
。
for(int i=0;i<a.length()-1 && i<b.length()-1;i++)
for(int i=1;i < Math.min(a.length(), b.length);i++){
if(a.charAt(i-1)==b.charAt(i-1))
if (a.charAt(i)==b.charAt(i)){
count +=1;
}
}