본문 바로가기

LeetCode

[LeetCode] - 58. Length of Last Word

LeetCode는 프로그래밍 문제를 풀며 코딩 실력을 향상할 수 있는 온라인 플랫폼입니다. 다양한 알고리즘 및 데이터 구조 문제를 제공하며, 면접 대비에 유용합니다. 해당 문제는, LeetCode Problems에서 볼 수 있는 난이도 '쉬움 (Easy)' 단계인 "Length of Last Word" 문제입니다.

--> https://leetcode.com/problems/length-of-last-word/description/

 

문제 : 

Given a string s consisting of words and spaces, return the length of the last word in the string.

A word is a maximal substring consisting of non-space characters only.


Example 1 :

Input : s = "Hello World"

Output : 5

Explanation : The last word is "World" with length 5.

 

Example 2 :

Input : s = " fly me to the moon "

Output : 4

Explanation : The last word is "moon" with length 4.

 

Example 3 :

Input : s = "luffy is still joyboy"

Output : 6

Explanation : The last word is "joyboy" with length 6.

 

Constraints:

  • 1 <= s.length <= 10^4
  • s consists of only English letters and spaces ' '.
  • There will be at least one word in s.

이 문제는 문장이 주어졌을 때, 마지막 단어의 길이를 반환해야 하는 코드입니다. 단순해 보이지만, 만약 마지막 단어 뒤에 스페이스가 있으면 곤란하기 때문에, 이 문제를 해결하면서 조건을 충족시켜야 하는 코드를 써야 합니다. 바로 코드로 보시겠습니다 : 

class Solution {
    public int lengthOfLastWord(String s) {
        int n = s.length();
        int count = 0;
        for (int i = n - 1; i >= 0; i--) {
            if (s.charAt(i) == ' ') {
                if (count > 0) {
                    return count;
                }   
                continue;
            }
            count++;    
        }
        return count;
    }
}

 

우선, n을 s의 길이로 저장해둡니다. count, 즉, 마지막 단어의 글자 수를 저장할 변수를 정합니다. 그리고 반복문을 돌립니다. 반복문은 뒤에서부터 처음으로 가는 방향으로 설정합니다. 이유는 우리는 "마지막" 단어에 집중해야 하기 때문입니다. 

만약 s의 가장 마지막 character가 빈 공간 (' ') 이라면, count가 0보다 큰지를 확인하고, 크면, 그 수를 반환합니다, 아닐 경우에는 count를 1씩 올립니다. 그렇게 반복문을 계속 돌리면, 마지막 단어 뒤에 있는 함정 빈 공간들을 무시하고 정말로 글자로만 되어있는 단어의 길이를 알아낼 수 있을 겁니다. 시간 복잡도는 O(n)입니다.

 

TMI : 제가 이제야 깨달은게 있는데, 그간 시간복잡도를 안 썼는데, 이 글부터 시간 복잡도를 쓰겠습니다. 만약, 다른 제 게시물에 있는 코드들의 시간복잡도도 궁금하시다면, 댓글 달아주십시오! 피드백도 되고 바로 게시물 수정하겠습니다

<(_ _)>


Runtime 결과