説明#
大文字と小文字、およびスペース ' '
のみを含む文字列が与えられた場合、その最後の単語の長さを返します。
最後の単語が存在しない場合は、0 を返します。
注意: 単語は文字で構成されるが、スペースを含まない文字列を指します。
例:
入力: "Hello World"
出力: 5
アプローチ#
- 空の文字列は 0 を返す
- 逆順でスペースでない要素を検索し、見つからない場合は 0 を返す
- スペースでない要素からカウントを開始し、スペースの要素に遭遇するか検索が終了するまでカウントし、その値を返す
int lengthOfLastWord(char * s){
int length = strlen(s) - 1,word_length = 0;
if(length < 0)//空の文字列
return 0;
while (s[length] == ' ')//最後のスペースでない要素を見つける
if(--length < 0)//検索が完了したかどうか
return 0;
for(;length >= 0 && s[length] != ' ';length--)//要素がスペースでなく、検索が完了していない場合
word_length++;
return word_length;
}
注意#
- スペースでない要素を検索する際は、まずスペースかどうかを確認し、その後に長さを減らし、検索が完了したかどうかを確認する必要があります。そうしないと、配列外参照エラーが発生する可能性があります。