LeetCode Length of Last Word最後の文字の長さ

3014 ワード

 1 class Solution {

 2 public:

 3     int lengthOfLastWord(const char *s) {

 4         if(s=="")    return 0;

 5         string snew=s;

 6         int n=0,len=strlen(s);

 7         char *p=&snew[len-1];

 8         while(*p==' '&&len!=0){

 9             *p--;

10             len--;

11         }

12         while(*p!=' '&&len!=0){

13             n++;

14             p--;

15             len--;

16         }

17         return n;

18     }

19 };

 
題意:文字の終わりと開始をスペースで判断する配列を与える.1つの語の前後はすべてスペースで、中間にはスペースがありません.最後の文字の長さを返します.
構想:修正不可能な文字列を与え、便宜上、別のポインタを作成します.最後にスペースがある場合は、まず後ろのスペースをフィルタし、後から最初のスペースではない文字を探して、スペースがあるか、文字列がスキャンされるまでカウントを開始します.
ツッコミ:snewは省略できるような気がしますが、直接sを利用すればいいです.でも文法は忘れた~