이번 문제는 입력된 문장 중에서 맨 마지막 단어의 알파벳 개수를 알아내는 문제입니다.
일단 문장 중에서 단어와 단어 사이에는 스페이스가 있습니다.
그래서 내가 생각한 방법은 스페이스를 기준으로 입력된 문장을 split해서 String 배열로 만드는 겁니다.
거기서 맨 마지막 단어를 가져와서 그 단어의 알파벳 개수를 세면 됩니다.
코딩은 아래와 같이 했습니다.
class Solution {
public int lengthOfLastWord(String s) {
int resultValue = 0;
String[] splitString = s.split(" ");
int lenSArray = splitString.length;
resultValue = splitString[lenSArray-1].length();
return resultValue;
}
}
이 스크립트는 훌륭하게 작동합니다.
Leetcode에서 소개한 다른 방법들은 아래와 같습니다.
Approach 1
class Solution {
public int lengthOfLastWord(String s) {
// trim the trailing spaces
int p = s.length() - 1;
while (p >= 0 && s.charAt(p) == ' ') {
p--;
}
// compute the length of last word
int length = 0;
while (p >= 0 && s.charAt(p) != ' ') {
p--;
length++;
}
return length;
}
}
이 방법은 우선 문장 맨 마지막으로 갑니다. (S.length()-1)
그 값이 스페이스이면 그 이전으로 갑니다.
뭔가 스페이스가 아닌 문자가 나왔다면 거기서부터 그 전 알파벳을 살펴 봅니다.
계속 이 과정을 반복하다가 스페이스가 나오면서 멈춥니다. 마지막 단어의 첫 알파벳에서 멈추는 겁니다.
그러는 동안 length++를 해주니까 마지막에는 맨 마지막 단어의 알파벳 개수가 나오게 됩니다.
이것도 좋은 방법이긴 한데... 내가 한 방법이 더 마음에 드네요.
다른 방법도 있습니다.
Approach 2.
class Solution {
public int lengthOfLastWord(String s) {
int p = s.length(), length = 0;
while (p > 0) {
p--;
// we're in the middle of the last word
if (s.charAt(p) != ' ') {
length++;
}
// here is the end of last word
else if (length > 0) {
return length;
}
}
return length;
}
}
이 방법은 Approach 1과 같습니다. 다만 두개의 루프를 하나의 루프로 줄인 것입니다.
Approach 3.
class Solution {
public int lengthOfLastWord(String s) {
s = s.trim(); // trim the trailing spaces in the string
return s.length() - s.lastIndexOf(" ") - 1;
}
}
마지막 방법인데요.
이 방법은 제가 만든 방법보다 더 깔끔한 것 같네요.
우선 trim으로 맨 끝에 스페이스가 있다면 없애 주고요.
문장의 전체 알파벳 개수를 구하고 (스페이스 포함) 거기에 이 문장의 마지막 스페이스의 위치를 구해서...
첫번째에서 두번째를 마이너스 하는 겁니다.
그러면 딱 마지막 단어의 알파벳 개수가 나오겠네요.
오늘 방법 중에서는 이게 제일 난 것 같습니다.
'etc. > Leetcode' 카테고리의 다른 글
Leetcode - 88. Merge Sorted Array - Easy (0) | 2022.09.07 |
---|---|
LeeT code - 83. Remove Duplicates from Sorted List - Ease (0) | 2022.09.07 |
Leetcode - 69. Sqrt(x) - Easy (0) | 2022.09.03 |
Leetcode - 67. Add Binary - Easy (0) | 2022.09.03 |
Leetcode 66. Plus One - Easy (0) | 2022.09.02 |
Leetcode - 326. Power of Three - Easy (0) | 2022.08.25 |
Anagram - different approach with ArrayList without loop (0) | 2022.08.24 |
Leetcode - 704. Binary Search - Easy (0) | 2022.08.22 |
Leetcode - 35. Search Insert Position + Big O + binary search (0) | 2022.08.21 |
Leetcode - 28. Implement strStr() - Easy (0) | 2022.08.18 |