이건 꽤 흔해요. 어려울 것 같지만, 생각해보면 나쁘지는 않습니다.
문자열이 회문인지 확인하는 golang 함수를 작성하세요.
회문은 순서를 바꿔도 동일한 일련의 문자입니다. 예:
'aba'는 회문입니다
"abb는 그렇지 않습니다
"ab a"는 대부분 회문으로 간주되므로 공백을 무시합니다.
func PalindromeCheck(str string) bool { trimmedStr := strings.ReplaceAll(str, " ", "") len := len(trimmedStr) chars := []rune(trimmedStr) for i := 0; i < len/2; i++ { if chars[i] != chars[len-i-1] { return false } } return true }
이 솔루션은 온라인 검색 시 C 또는 Java에서 찾을 수 있는 것과 기능적으로 동일합니다. 우리는 본질적으로 일치하지 않는 문자를 찾기 위해 처음과 끝에서 탐색하기 위해 이중 포인터를 사용하고 있습니다. 불일치가 발견되면 문자열이 회문이 아니라고 선언할 수 있습니다.
더 좋게 만들 수 있을까요?
strings.ReplaceAll을 사용하는 것보다 공백을 자르는 더 좋은 방법이 있습니까? (있긴 하지만 보기 흉할 수도 있습니다)
[]룬으로 변환하면 효율이 어떤가요?
댓글로 여러분의 생각을 남겨주세요.
감사합니다!
이 게시물과 이 시리즈의 모든 게시물에 대한 코드는 여기에서 확인할 수 있습니다
위 내용은 Palindrome 문자열 확인의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!