トピック
leetcode58。最後の単語の長さ
大文字と小文字とスペースのみを含む文字列
sが与えられた場合、最後の単語の長さを返します。文字列が左から右にスクロールする場合、最後の単語が最後に表示される単語です。
最後の単語がない場合は、0を返します。
注:単語とは、文字のみで構成され、スペース文字を含まない最大の部分文字列を指します。
例:
入力: "Hello World"
出力:5
コード
- アイデア
- 最初の非スペースから数えて、最後から後方にトラバースし、スペースに再び遭遇するか、トラバーサルが終了します。
- コード
// C
#include <string.h>
int lengthOfLastWord(char* s) {
int len = 0;
for (int i = strlen(s)-1; i >= 0; --i){
if (s[i] != ' '){
++len;
}else {
if (len) {
break;
}
}
}
return len;
}
// C++
#include <string>
using namespace std;
class Solution {
public:
int lengthOfLastWord(string s) {
int len = 0;
for (int i = s.size() - 1; i >= 0; --i) {
if (s[i] != ' ') {
++len;
} else {
if (len) {
break;
}
}
}
return len;
}
};
テスト
#include <iostream>
int main() {
{
char* s = "Hello World";
cout << lengthOfLastWord(s) << endl;
}
{
string s = "Hello World";
Solution so;
cout << so.lengthOfLastWord(s) << endl;
}
cin.get();
return 0;
}
- 結果:
5
5