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を利用すればいいです.でも文法は忘れた~