이것은 인터뷰 질문입니다. 나는 아래의 코드가 약간 동작하고 약간의 오류가 있다고 생각한다. 문제는 다음과 같습니다. -입력 한 암호가 유효한지 확인하십시오.
1-9 키패드에서 하나의 키가 작동하지 않습니다. 암호를 입력하면 작업 키가 입력되지 않습니다. 예상 암호와 암호를 입력했습니다. 입력 된 암호가 유효한지 확인하십시오 예 : 164, 예상 18684 (18684와 164를 입력 할 때주의해야합니다.)
위의 코드는 다음과 같습니다.
public static void main(String[] args){
System.out.println(IsAMatch("164","18684"));
}
static boolean IsAMatch(String actual, String expected)
{
char faultyKey = '\0';
int i = 0, j = 0;
for(; i < expected.length() && j < actual.length(); ++i)
{
if(actual.charAt(j) != expected.charAt(i))
{
if('\0' != faultyKey){
if(faultyKey != expected.charAt(i))
return false;
}
else{
faultyKey = expected.charAt(i);
}
}
else{
++j;
}
}
System.out.println("FaultyKey= "+faultyKey);
return (i == expected.length() - 1 && j == actual.length() - 1)? true : false;
}
이 올바르게 잘못된 키를 감지한다 (예는 여기있다 8)하지만 (거짓으로) 잘못 출력을 제공하는 것은 위에서 사용 된 테스트 케이스는 사실 주어야한다하더라도. 해결 방법이 있습니까? 더 나은 방법/아이디어가 가장 높이 평가되는 경우. 간단한
return (i == expected.length() && j == actual.length()) ? true : false;
나 :
FYI - 답장에서 -1을 제거 할 것을 제안한 사람. IsAMatch ("164", "1868488")에 대한 대답이 잘못되었습니다. –
코드에 문제가 한 번 더 발생했습니다. – WonderWorld