一. 題目描述
Given a string s consists of upper/lower-case alphabets and empty space characters ’ ‘, return the length of last word in the string.
If the last word does not exist, return 0
.
Note: A word is defined as a character sequence consists of non-space characters only.
For example,
Given s = "Hello World"
,
return 5
.
二. 題目分析
該題的大意是,輸入一串字符,輸出最後一個單詞的長度。
除了考慮一些基本的邊界條件,該題沒有過多的要求,也沒有檢測單詞中是否含有'.'
等非字母符號。可采用從前往後或從後往前遍歷一次,期間經過少量判斷語句即可記錄單詞的長度。
三. 示例代碼
// 從前往後遍歷
class Solution {
public:
int lengthOfLastWord(string s) {
int result = 0;
if (s.size() < 1 || s == " ") return result;
if (s[0] != ' ') result = 1;
for (int i = 1; i < s.size(); ++i)
{
if (s[i] != ' ' && s[i - 1] == ' ') result = 1;
if (s[i] != ' ' && s[i - 1] != ' ') ++result;
}
return result;
}
};
// 從後往前遍歷,更簡潔的代碼
int lengthOfLastWord(string s) {
int index = s.size() - 1, result = 0;
while (index >= 0 && isspace(s[index])) --index;
while (index >= 0 && isalpha(s[index])) {
++result;
--index;
}
return result;
}
四. 小結
該題的邊界條件不算復雜,但若加入其他限制,也可以變成一道難題。