求无符号数二进制中1的个数&&求一个字符串中最长的连续子串
来源:互联网 发布:批量修改文件名称软件 编辑:程序博客网 时间:2024/05/22 06:45
小米二面题:
给定一个无符号数n,求二进制表示中1的个数。
版本1:
每次与1与,每次右移一位。
class Solution {public:int count1(unsigned n) {int count = 0;while (n>0){if (n & 1) count++;n >>= 1;}return count;}};
版本2:更快
每次与n-1与,每次消除一个1
class Solution {public:int count1(unsigned n) {int count;for (count = 0;n; count++){n = n&(n - 1);}return count;}};题2:求一个字符串中最长的连续子串
这个可以用两个指针,一个i从到到尾,另一个j从i+1到尾,找到第一个与i相同的字符,然后下个相同则加1,再和之前的最长的数字进行比较,如果比之前的大则记录i的起始位数和最大长度,然候j继续向后,直到空,不过复杂度是n2。
其他的关于最长子串的可以参考这个博客最大子序列
class Solution {public:string substring(string s) {int maxcount = 0;int maxpos = 0;int count = 0;string res;for (int i = 0; i < s.size(); i++){for (int j = i+1; j < s.size(); j++){if (s[j]==s[i]){count = 0;while (s[i] == s[j]){count++;i++;j++;}if (count > maxcount){maxcount = count;maxpos = i-count;i = i - count;//i要回到之前的位置}}}}for (int i = maxpos; i <maxpos+maxcount; i++){res.push_back(s[i]);}return res;}};
0 0
- 求无符号数二进制中1的个数&&求一个字符串中最长的连续子串
- 无符号整型数用二进制串表示,求此串中1的个数
- C语言 两种方法求一个十进制无符号数的二进制数中1的个数
- 求无符号数中1的个数
- 快速求一个32位无符号整数二进制中为1的个数
- 快速求一个32位无符号整数二进制中为1的个数
- 求一个数的二进制数中1的个数
- 求一个数的二进制数中1的个数
- 求字符串中最长连续数字子串的长度
- 求字符串中最长连续数字子串的长度
- 求一个数的二进制表示中1的个数
- 求一个数的二进制表示中1的个数
- 求一个整数的二进制数中1的个数
- 求一个数的二进制中1的个数
- 求一个正整数的二进制数中1的个数
- 求一个数的二进制序列中1的个数
- C::求一个数的二进制中1的个数
- 求一个数的二进制中1的个数
- android Handler 消息传递机制
- Nginx+lua_Nginx+GraphicsMagick来实现实时缩略图(已验证)
- 闰秒惊魂
- 计算表达式(栈)
- 第十七周oj刷题——Problem F: C++习题 输入输出--保护继承
- 求无符号数二进制中1的个数&&求一个字符串中最长的连续子串
- C++ primer 学习笔记 2 快速入门2
- LeetCode-Majority Element -解题报告
- 【iOS开发系列】更换头像(相机、相册)
- CHANGE MASTER TO语法
- 国产手机在mac os中无法被adb识别的解决方法(转)
- 大二下学期总结
- 线程锁
- Python笔记:MySQLdb模块常用操作