查找一个int数的二进制中连续最长的1开始出现的索引
2017-09-27 22:36
796 查看
题目:插入找一个int数的二进制中连续最长的1开始出现的索引
例如:1457243 对应的二进制101100011110001011011
对应输出是10
分析:变量count记录连续1出现最大值长度,curcount记录当前最长值
对输入n,用0x01这个数每次左移一位和n相与,判断是不是非0,如果非零则curcount++,如果是0,则curcount和count比较,若curcount>count则更新count。
注意每次更新count的时候也要更新index,记录当前count长的串的索引。
#include<iostream>
using namespace std;
int fun(int n)
{
int a = 0x01;
int count = 0;
int curcount = 0;
int i = 0;
int index = 0;
while (a)
{
if ((a&n) != 0)
{
curcount++;
}
else
{
if (count<curcount)
{
count = curcount;
index = i - count;
curcount = 0;
}
}
i++;
a=a<<1;
}
return index;
}
int _tmain(int argc, _TCHAR* argv[])
{
/*int a = 0xffff1111;
short *p = (short*)&a;
printf("%08x",*p);*/
cout<<fun(1457243);
return 0;
}
例如:1457243 对应的二进制101100011110001011011
对应输出是10
分析:变量count记录连续1出现最大值长度,curcount记录当前最长值
对输入n,用0x01这个数每次左移一位和n相与,判断是不是非0,如果非零则curcount++,如果是0,则curcount和count比较,若curcount>count则更新count。
注意每次更新count的时候也要更新index,记录当前count长的串的索引。
#include<iostream>
using namespace std;
int fun(int n)
{
int a = 0x01;
int count = 0;
int curcount = 0;
int i = 0;
int index = 0;
while (a)
{
if ((a&n) != 0)
{
curcount++;
}
else
{
if (count<curcount)
{
count = curcount;
index = i - count;
curcount = 0;
}
}
i++;
a=a<<1;
}
return index;
}
int _tmain(int argc, _TCHAR* argv[])
{
/*int a = 0xffff1111;
short *p = (short*)&a;
printf("%08x",*p);*/
cout<<fun(1457243);
return 0;
}
相关文章推荐
- 2015输入一个字符串以#结尾,则输出此字符串中连续出现最长的数字串及其开始的下标;
- JavaSE8基础 String indexOf 正向 从指定索引值开始查找 字符在字符串中第一次出现的位置
- 写一个函数,用来把一个字符串用指定的字符作为分隔符分割成若干个子串输出 | 写一个函数,用来返回一个字符串中重复出现的最长字串的长度及其开始地址
- 统计一个二进制字符串连续出现0或者连续出现1的最大次数
- 用递归找一个字符串中 最长连续出现的字符的个数
- 给定一个字符串,查找该字符串中第一个重复出现的字符索引。要求:时间复杂度为O(n)。
- 求无符号数二进制中1的个数&&求一个字符串中最长的连续子串
- 用三重循环求一个字符串的最大回文串(连续重复出现的最长子串)
- 2015上机一 输出字符串中连续出现最长的数字串及其开始的下标
- 【微软100题】写一个函数,它的原形是int continumax(char *outputstr,char *intputstr) 功能: 在字符串中找出连续最长的数字串,并把这个串的长度返回
- 第25题: 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr),在字符串中找出连续最长的数字串,并把这个串的长度返回
- 查找一个数组中不连续0出现的个数
- 找到二进制字符串中连续最长'0'出现位置
- 编写一个程序,从标准输入中读取若干string对象并查找连续重复出现的单词。所谓连续重复出现的意思是:一个单词后面紧跟着这个单词本身。要求记录连续重复出现的最大次数以及对应的单词
- 【练习】写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,
- IndexOf的用法(查找一个字符出现的次数以及索引)
- 查找一个short标记数值在二进制文件中第一次出现的位置
- 在一个字符串中找出以同样的顺序连续出现在另一个字符串中的最长连续字符串的长度
- 返回一个字符串中重复出现的最长字串的长度及其开始字符
- 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。