• 阿里巴巴10.8号笔试题
    • 题目描述
    • 算法分析
    • 关键步骤
    • 最后附上实现代码
    • 后记

)

阿里巴巴10.8号笔试题

题目描述

题目描述:给定一组或多组三十二位长度的补码数字,返回每组数字加和后的十进制的数字。

算法分析

算法分析:
首先,数字的补码,有正负之分,正整数的补码就是正码。而唯一需要注意的是负整数的补码是它的反码加一。所以根据补码就要减去一,再将求出反码。

关键步骤

第一,判断正负。取字符串第一位数字判断。

第二,字符串是32位长度,存在大量的冗余,所需要的只是后几位的数字。而确定从何处切下的关键在于:正数从左向右,找到第一个1;负数从右向左,找到第一个0。

第三,处理负数字符串,这里用到了位运算<<1。将原字符串切下后的有效部分,先转为十进制整数并减去一,再将减一后的整数进行位运算,记住最后要取负数。

最后附上实现代码

//import java.util.Scanner;
public class Main3 {public static void main(String[] args) {//        Scanner sc = new Scanner(System.in);//        int t = sc.nextInt();//有几组数组//        String[] strs = new String[2*t];//        for(int i=0;i<2*t;i++){//            strs[i] = sc.next();//        }String[] strs = new String[]{"11111111111111111111111111010110",// -42"00000000000000000000000000010100" // 20};int[] counts = Count(strs);for(int i = 0;i<counts.length-1;i+=2){int sum = counts[i]+counts[i+1];System.out.println(sum);}}public static int[] Count(String[] strs){int[] res = new int[strs.length];for(int i=0;i< strs.length;i++){String str = strs[i];if (str.charAt(0) != '0'){//负数int begin = str.indexOf('0');str = str.substring(begin);int con = convert(str)-1;res[i] = -(con<<1);}else{ // 正数int begin = str.indexOf('1');str = str.substring(begin-1);int num = convert(str);res[i] = num;}}return res;}public static int convert(String str){int res=0;char[] chars = str.toCharArray();for (int i = 0; i < chars.length; i++) {int num = (chars[i]-'0')* (int)Math.pow(2,chars.length-1-i);res += num;}return res;}
}

后记

这道题目的算法关键在于知晓位运算,就可以省下很大的气力。大厂尤其重视算法基础,特别是应届毕业生。最后在2021年秋招基本结束之际,预祝大家拿到心仪的offer。

阿里巴巴校招笔试题10.8相关推荐

  1. 九月十月 阿里 百度 华为 校招笔试题

    九月迅雷,华为,阿里巴巴,最新笔试面试十题 8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的     i .每次从通里面 ...

  2. 关于python类的继承正确的说法是_2017美团点评的运维岗校招笔试题,测测你会几题?...

    原标题:2017美团点评的运维岗校招笔试题,测测你会几题? 1.数据库:以下哪项不是HASH索引的特征? A MySQL不能确定在两个值之间大约有多少行 B 不能使用hash索引来加速ORDER BY ...

  3. 小米运维部14年校招笔试题A的个人答案

    15年准备实习生面试时答的题,仅供参考 具体题目详见  http://www.tuicool.com/articles/eYRZBr http://noops.me/?p=1154 一.linux基础 ...

  4. 剑指Offer——腾讯+360+搜狗校招笔试题+知识点总结

    剑指Offer--腾讯+360+搜狗校招笔试题+知识点总结 9.11晚7:00,腾讯笔试.选择题与编程.设计题单独计时. 栈是不是顺序存储的线性结构啊? 首先弄明白两个概念:存储结构和逻辑结构. 数据 ...

  5. java校招笔试题目_Java校招笔试题

    2020校招笔试题答案及评分标准 满分100分 时间1小时 一.简答题: (5分)写出你用过的linux命令,举例说明其中几个的具体用法. 答案:略.评分标准:正确五个,1分一个. (5分)写出TCP ...

  6. 凑硬币(58同城2017校招笔试题)

    凑硬币(58同城2017校招笔试题) 暴力破解,循环递归实现,代码如下: /** * 暴力破解,循环递归,找出了所有可能的组合并进行了存储,* 在循环递归的时候,因为选取的分类相互是有重叠的,生成的递 ...

  7. 数据分析真题日刷 | 欢聚时代2018校招笔试题-产品经理/数据分析/游戏运营/市场专员 A卷

    今日真题 欢聚时代2018校招笔试题-产品经理/数据分析/游戏运营/市场专员 A卷(来源:牛客网) 题型 客观题:单选5道,不定项选择10道 主观题:问答4道 完成时间 90分钟 牛客网评估难度系数 ...

  8. 2020万得技术校招笔试题(软件开发)

    2020万得技术校招笔试题(软件开发) 不定项选择题(共5题,时间5分钟) 1. 在浏览器中输入https://www.wind.com.cn, 其中https代表____ A. 地址 B. 资源 C ...

  9. 武汉光迅科技22校招笔试题(武汉邮科院控股国企上市大厂Python的txt文本处理笔试题)

    武汉光迅科技22校招笔试题(武汉邮科院控股国企上市大厂Python的txt文本处理笔试题) 资源: https://download.csdn.net/download/weixin_53403301 ...

最新文章

  1. 即将到来的金三银四,这10道springboot常见面试题你需要了解下
  2. 大角度人脸转正--Towards Large-Pose Face Frontalization in the Wild
  3. 《JAVA练习题目2》 输入十个学生的考试成绩,将及格学生的成绩从高到低排序输出。
  4. python3安卓版下载-QPython3H安卓运行Python神器
  5. 我与Python网络爬虫的第一次接触
  6. C++ new和malloc区别
  7. Java的各种中文乱码解决方法
  8. 程序员最常说的那些口头禅
  9. AI机器视觉技术在生活中的应用
  10. 洛谷P2732 商店购物 Shopping Offers
  11. 8.Mac PHPStorm 快捷键
  12. springmvc以html作为视图_SpringMVC如何自定义视图
  13. vmware虚拟机上的debian系统通过电脑的无线网卡联网
  14. 龙格库塔方法的原理和案例及MTATLAB编程
  15. FastDFS文件上传和下载(java代码实现)
  16. 求二元函数最大值matlab,利用matlab, 二元函数求最大值
  17. Monjes Budistas - Live Mantra(2008)[古典红底红花边]
  18. Django中ORM操作
  19. 【神经网络】MP神经网络模型(附实例代码讲解)
  20. 从零开始学黑苹果-基础安装教程(10.11.6)

热门文章

  1. 主动式电容笔好用吗?主动式和被动式电容笔的区别
  2. 几款Web富客户端(RIA)框架
  3. python — 项目命名规范
  4. 最小外接矩形(RotatedRect返回角度angle、width、height问题)
  5. 论文:Flow Reconstruction for Data-Driven Traffic Animation
  6. Linux 应用编程框架
  7. NOJ-1142-踩气球
  8. 解决IBGP的水平分割和BGP选路原则
  9. git的分支管理(详细版)
  10. Codeforces Round 883 (Div. 3)