HackerRank에서 이와 유사한 질문을 받았습니다. 서클이 있는지 확인합니다.
차이점은 F가 G로 대체되었다는 것입니다 (즉, G는 한 단계 앞으로 이동 함을 의미 함).
나는 수락 된 답변에 설명 된 것과 같은 알고리즘을 구현했지만 테스트 사례 하나에 실패했습니다. 누군가 나를 위해 버그를 찾을 수 있습니까?
static String checkIfCircleExists(String s) {
int x = 0;
int y = 0;
int dir = 0;
for (char c : s.toCharArray()) {
switch (c) {
case 'G':
switch (dir) {
case 0:
y++;
break;
case 1:
x++;
break;
case 2:
y--;
break;
case 3:
x--;
break;
}
break;
case 'L':
dir = Math.abs((dir - 1) % 4);
break;
case 'R':
dir = Math.abs((dir + 1) % 4);
break;
}
}
if (x == 0 && y == 0) {
return "YES";
}
return "NO";
}
편집하다
이것은 도우미 메서드입니다. 이 도우미 메서드에 대한 입력은 원래 입력 문자열의 세 복사본과 연결된 원래 입력 문자열입니다. 예를 들어, 입력 "G"의 경우 "GGGG"가이 도우미에 전달됩니다.
코드 (dir - 1) % 4
가 귀하의 언어로 의도 한대로 작동 합니까 ?
그렇지 않은 경우 다음으로 교체하십시오. (dir + 3) % 4
질문 편집 후 실제는 아니지만 런타임을 줄이는 데 유용 할 수 있습니다.
이사는 두 가지 경우에 제한됩니다.
두 번째는 무시한 것 같습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다