标签:style blog io color ar sp div on log
题目:给定一个只包含大小写字母和空格的字符串。返回最后一个单词的长度。“abc a” 是1 “abc ”是3
两种思路,一个从头往后,一个从后往前。
1.从头往后的话,需要记住空格前的一个单词是多长,如果空格到尾了,就输出记录的值,如果空格之后还有单词,就重新计数。用flag记录知否遇到空格。
class Solution { public: int lengthOfLastWord(const char *s) { int flag = 0, cnt = 0; while(*s != ‘\0‘) { if (flag) {cnt = 0; flag = 0;} while (*s != ‘\0‘ && *s != ‘ ‘) {cnt++;s++;} while (*s != ‘\0‘ && *s == ‘ ‘) {s++;flag = 1;} } return cnt; } };
2.从后往前,先确定最后一个指针,然后一直往前碰到第一个单词之后的空格就返回。
class Solution { public: int lengthOfLastWord(const char *s) { const char *p = s + strlen(s) - 1; int cnt = strlen(s), t = 0; while(cnt > 0) { if (*p == ‘ ‘) {p--; cnt--;continue;} if (cnt > 0 && *p != ‘ ‘) { while(cnt > 0 && *p != ‘ ‘) { t++;cnt--;p--; } return t; } } return 0; } };
标签:style blog io color ar sp div on log
原文地址:http://www.cnblogs.com/higerzhang/p/4075012.html