今晚华为笔试第一题101比特数匹配有大佬分享下思路嘛。

跪求大佬指导#华为##笔试题目#
全部评论
#include <iostream> #include <vector> using namespace std; int main(int argc, char* argv[]) {     int val;          while(cin >> val)     {         int count = 0, first = -1;         vector<int> bits(32,0);                  for(int i = 0; i < 32; i++)         {             if((val & (1 << i)) > 0)             {                 bits[i] = 1;             }         }                  for(int i = 0; i < 30; i++)         {             if((bits[i] == 1) && (bits[i+1] == 0) && (bits[i+2] == 1))             {                 if(first == -1)                 {                     first = i;                 }                                  count++;             }         }                  cout << count << ' ' << first << endl;     }          return 0; }
点赞 回复 分享
发布于 2019-08-14 23:18
python bin()直接转换 然后位置是tm的从右边开始算的,,,,,,,,,,
点赞 回复 分享
发布于 2019-08-14 21:51
楼主,可以分享下8.14的笔试题吗😊如果记得的话
点赞 回复 分享
发布于 2019-09-14 23:06
#include <algorithm> #include <iostream> #include <vector> #include <string> using namespace std; string bin2(int n) { string str=""; while (n!=0) { str = to_string(n % 2) + str; n = n/ 2; } return str; } void fun(string a) { int count = 0; int begin = -1; while ((begin = a.find("101", begin + 1)) != string::npos) { count++; } cout << count << " "; cout << a.find_first_of("101") << endl; } int main()  { int n; string a; while (cin >> n) { a = bin2(n); reverse(a.begin(), a.end()); fun(a); } }
点赞 回复 分享
发布于 2019-08-17 14:23
楼主问一下华为笔试可以使用本地编译器吗
点赞 回复 分享
发布于 2019-08-15 14:40
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int m = in.nextInt(); String str = Integer.toBinaryString(m); StringBuffer sb = new StringBuffer(str); sb.reverse(); int n = sb.indexOf("101"); int count = 0; for (int i=0;i<sb.length()-2;i++) { StringBuffer sb1 = new StringBuffer(); for (int j=i;j<i+3;j++) { sb1.append(sb.charAt(j)); } String str1 = sb1.toString(); int num = Integer.valueOf(str1); if (num == 101) { count++; } } System.out.println(count+" "+n); } }
点赞 回复 分享
发布于 2019-08-14 23:44
s = "1010101" t = "101" count ,idx = 0,-1 if len(s)<3:     print(0,-1) else:     for i in range(len(s)-2):         if s[i:i+3] =="101":             count +=1             idx = i+2 print(count,idx)
点赞 回复 分享
发布于 2019-08-14 23:38
点赞 回复 分享
发布于 2019-08-14 23:32
import java.util.Scanner; public class Test004 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner = new Scanner(System.in); int index = -1; int number = 0; int num = scanner.nextInt(); String numString = Integer.toBinaryString(num); char [] array = numString.toCharArray(); if(array.length < 3) { System.out.println(number+" "+ index); return; } for(int i = array.length -1; i >= 2;i--) { if(array[i] == '1' && array[i-1] == '0' && array[i-2] == '1') { if(number == 0) { index = i; } number++; } } if(number == 0) { System.out.println(number+" "+ index); } else  { System.out.println(number+" "+ (array.length - 1 - index)); } } }
点赞 回复 分享
发布于 2019-08-14 22:09
c++ bitset<> reverse  to_string find 遍历一遍  负数补码补码补码呜呜呜
点赞 回复 分享
发布于 2019-08-14 21:54
按位与 然后移位啊😥
点赞 回复 分享
发布于 2019-08-14 21:51
😪转成二进制str,然后遍历过的 极其丑陋 同求思路
点赞 回复 分享
发布于 2019-08-14 21:48

相关推荐

豆泥🍀:同26届,加油,我也还没找到查看图片
点赞 评论 收藏
分享
04-15 23:42
中山大学 Java
ResourceUtilization:过几天楼主就会捧着一堆offer来问牛友们该怎么选辣
点赞 评论 收藏
分享
评论
1
26
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务