[버클 노트 58] 마지막 단어의 길이.
8954 단어 LetCode 연습 노트leetcode
몇 개의 단어로 구성된 문자열
s
을 드리겠습니다. 단어 사이를 빈칸으로 구분하십시오.문자열의 마지막 단어의 길이를 되돌려줍니다.마지막 단어가 없으면 0을 반환합니다.단어는 공백이 없는 문자로만 구성된 최대 하위 문자열입니다.
예 1:
:s = "Hello World"
:5
예 2:
:s = " "
:0
팁:
1 <= s.length <= 104
s
영문 및 공백' '
으로만 구성생각:
문자열을 바이트 그룹으로 바꾸어 마지막 자리부터 찾습니다.
코드:
func lengthOfLastWord(s string) int {
if s == " " {
return 0
}
b := []byte(s)
for i := len(b) - 1; i >= 0; i-- {
if b[i] == ' ' {
return len(b) - 1 - i
}
}
return len(b) - 1
}
결과:
오류에 대한 해답
입력: "a"
출력: 0
예상 결과: 1
오류 원인:
전체 문자열에 한 단어만 빈칸이 없을 때, 되돌아오는 결과는 문자열의 길이이지 길이가 1로 줄어드는 것이 아니다.
해법 2 (오류)
코드:
func lengthOfLastWord(s string) int {
if s == " " {
return 0
}
b := []byte(s)
for i := len(b) - 1; i >= 0; i-- {
if b[i] == ' ' {
return len(b) - 1 - i
}
}
return len(b)
}
결과:
실행 결과:오류 해결
입력: "a"
출력: 0
예상 결과: 1
오류 원인:
테스트 용례
”a “
에 마지막 빈칸이 있으니 마지막 빈칸을 제외하고 상태기를 사용할 수 있고flag 표시를 설정하면 해결할 수 있습니다.해법 3 (정답)
코드:
func lengthOfLastWord(s string) int {
if s == " " {
return 0
}
var flag bool //” “
var blankNum int //
b := []byte(s)
for i := len(b) - 1; i >= 0; i-- {
if b[i] == ' ' {
if flag {
return len(b) - 1 - i - blankNum
} else {
blankNum++
}
} else {
if flag == false {
flag = true
}
}
}//for
return len(b) - blankNum
}
결과:
실행 결과:
실행 시간: 0ms, 모든 Go 제출에서 100.00%의 사용자를 처치
메모리 사용량: 2.2MB로 모든 Go 제출에서 24.25%의 사용자를 제쳤다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
처음부터 시작하는 LeetCode Day11 「1315. Sum of Nodes with Even-Valued Grandparent」해외에서는 엔지니어의 면접에 있어서 코딩 테스트라고 하는 것이 행해지는 것 같고, 많은 경우, 특정의 함수나 클래스를 주제에 따라 실장한다고 하는 것이 메인이다. 그 대책으로서 LeetCode 되는 사이트에서 대책을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.