题目描述
计算字符串最后一个单词的长度,单词以空格隔开。
输入描述:
一行字符串,非空,长度小于5000。
输出描述:
整数N,最后一个单词的长度。
示例1
输入
hello world
输出
5
解题思路
从后往前遍历
因为题目要求最后一个单词长度,我们如果从前往后遍历的话,假设长度为5000,会多余话费大量的时间,所以很明显我们可以从后往前遍历,直到遇到第一个空格为止。
如何找到字符串的尾部
如何寻找字符串末尾呢?可以用strlen( )函数,我这边考虑自己实现strlen( )。如何实现呢?可以直接遍历整个字符串,直到遇到'\0'为止,得到字符串长度idx,并用sp[idx-1]表示字符串的尾部。
c语言实现
#include <stdio.h> #include <stdlib.h> int main() { char* sp; int idx = 0; int count = 0; sp = (char*)malloc(sizeof(char)*5000); gets(sp); while (sp[idx] != '\0') { idx++; } for (int i = idx-1; i >= 0; i--) { if (sp[i] != ' ') { count++; } else { break; } } printf("%d\n",count); free(sp); return 0; }
c++实现
#include <iostream> #include <string> using namespace std; int main() { string str; while (getline(cin,str)) { int count = 0; for (int i = str.size()-1; i >= 0; i-- ) { if (str[i] != ' ') { count++; } else{ break; } } cout << count << endl; } return 0; }