leetcode-15-basic-string
Posted pxy7896
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-15-basic-string相关的知识,希望对你有一定的参考价值。
58. Length of Last Word
解题思路:
从结尾向前搜索,空格之前的就是最后一个词了。写的时候我考虑了尾部有空格的情况。需要注意的是,测试用例中有" "的情况,此时应返回0。
int lengthOfLastWord(string s) { if (s.length() == 0 || s.length() == 1 && s[0] == \' \') return 0; if (s.length() == 1 && s[0] != \' \') return 1; int i; int count = 0; bool flag = false; for (i = s.length() - 1; i >= 0; i--) { if (s[i] == \' \') { if (flag == false) continue; else break; } if (s[i] != \' \') { if (flag == false) flag = true; count++; } } return count; }
338. Counting Bits
解题思路:
这道题想了好久。。思路是当前数i与i-1按位做与操作,这样可以找到最长相同前缀的地方,从那个位置之后,i-1的为0,i的为1且后面都是0,所以只要
取这个数的1的个数再加1就可以了。例如:
1011 0011 1
1011 0100 0
所以只要知道1011 0000 0处1的个数,再加1即可。用vector存好即可。
vector<int> countBits(int num) { vector<int> result(num+1, 0); if (num == 0) return result; for (int i = 1; i < num + 1; i++) { result[i] = result[i & (i - 1)] + 1; } return result; }
以上是关于leetcode-15-basic-string的主要内容,如果未能解决你的问题,请参考以下文章