阿里巴巴笔试题 翻转数字

下面是用我的原话复述的题目:

给定一个二进制字符串,只有01构成,我们可以对这个字符串的某一位进行翻转操作
翻转某一位代表把0变成1,或者1变成0;翻转一位的同时,它旁边的两位也会同时翻转
比如 01010 ,我们翻转第三位,那么结果就是00100
如果是开头或者结尾,那么就是旁边的一位进行翻转
给定一个字符串,我们判断能不能通过这种若干次的翻转使得字符串全部变成0,如果可以,给出翻转次数最小值
比如01就不行,011就可以

这一题当时想了很久都没有思路,但是后来同学教了一种贪心的方法,觉得豁然开朗,故记录之

这题的思路就是如何挨个让1变成0,并且保证前面的都是0不变。那么我们可以从字符串开头像结尾进行遍历,如果碰到1,那么就翻转后面的一位数字,比如00100,我们从左向右遍历,碰到第一个1的时候在第三位,那么我们翻转第四位,就变成了00011,因为我们是从1后面的一位开始翻转,那么肯定可以保证当前位置前面的字符全部都是0。所以我们从第三位开始遍历,碰到了第四位是1,那么翻转第五位,变成了00000 。 如果到最后变成000…0001的情况,那么就可以判定不可以。

但是这种方法我们没有办法判断第一位是否应该翻转的情况。比如0111001这个字符串如果不翻转第一位就没有办法变成全0。这个问题有两种解决方案:

  1. 在给出的字符串开头分别加上0,1。比如0111001变成了00111001和10111001,这两种情况分别代表着不翻转第一位和翻转第一位的情况,如果两个情况有一种变成全0,那么给定的字符串就可以变成全0。
  2. 分别讨论翻转第一位和不翻转第一位的情况,其实思想与第一种方案相同

关于这种方法的最优性,我感觉应该是最优的,因为这种方法保证了每一位都只会最多进行一次翻转,依次进行到字符串的结尾,不会有多余的翻转次数。
不知道有没有大佬可以给出证明或者证错,感激不尽

阿里巴巴笔试题,翻转数字相关推荐

  1. 讲透学烂二叉树(六):二叉树的笔试题:翻转|宽度|深度

    翻转|镜像二叉树 华为面试题--将二叉树的两个孩子换位置,即左变右,右变左. 90% of our engineers use the software you wrote (Homebrew), b ...

  2. 阿里巴巴笔试题:数据分析与建模测试

    阿里巴巴笔试题:数据分析与建模测试 请阅读以下文字答题. Field Descriptions: isbuyer - Past purchaser of product buy_freq - How ...

  3. 2016阿里巴巴笔试题

    2016阿里巴巴笔试题 昨天刚刚考完阿里的秋季校招笔试.40分钟单选和60分钟开放题,选择题50%以上为数学题.还涉及到了操作系统,算法.整理例如以下: 选择题: (1)下列语句中描写叙述最正确的是_ ...

  4. 以下c语言程序片段用于估测cpu的cache参数,阿里巴巴笔试题

    阿里巴巴笔试题 1.平均速度最快的排序算法是______. Shell排序 快速排序 冒泡排序 插入排序 2014-03-29 18:36:02 2.某服务进程的QPS(没秒处理的请求个数)较低,在空 ...

  5. 阿里巴巴笔试题,附带解析

    阿里巴巴面试题 1.  20个阿里巴巴B2B技术部的员工被安排为4排,每排5个人,我们任意选其中4人送给他们一人一本<effective c++>,那么我们选出的4人都在不同排的概率为: ...

  6. 招银网络科技笔试题:数字分解

    之前都在leetcode刷题,有些文章直接保存到上面去了,这是今天做招银的测试题中的一个,先说一下题目的大概意思. 给定一个整数,要求输出关于这个整数的各种数字相加的组合: 1:0种 2:0种 3:3 ...

  7. 2019届华为秋招笔试题【数字反转相加】【消除重复数字】【仿LISP运算】

    数字反转相加 1.题目描述 请您写一个 reversoAdd函数,该函数根据输入的两个正整数a和b, 字按照高位在右边的方式反转后求和. 例如,reverseAdd(123, 456) == 321 ...

  8. 最新上海阿里巴巴笔试题分享

    今天(2013/9/22)去了阿里巴巴笔试,现在靠记忆复述考点大致如下: 选择题,注意做错要扣分,比如不定项选择全对得5分,少选得2分,不做0分,多选或选错扣2分,(这好像是从外企学过来的==)大概是 ...

  9. 阿里巴巴笔试题-马尔科夫(HMM)的特征

    Hidden Markov model (HMM) 一.马尔科夫转移矩阵法的涵义  单个生产厂家的产品在同类商品总额中所占的比率,称为该厂产品的市场占有率.在激烈的竞争中,市场占有率随产品的质量.消费 ...

最新文章

  1. rap 接口管理 java_有没有类似阿里rap的api管理方案(rap太卡了)
  2. cydia收费插件源_Cydia消失了怎么办 Cydia错误汇总介绍【图文】
  3. Laravel 文件夹结构简介
  4. hdu 5124(线段树区间更新+lazy思想)
  5. ASP.NET锚标记使用2种小方法
  6. 怎么保证读取最新数据_摄影师的数据存储有多难,怎么存储大量数据并保证安全高速防水防摔防尘?SanDisk...
  7. 如何补充策略与模型在风控中的滞后性
  8. dubbo这样的RPC接口与HTTP接口相比,有什么优势,以及HTTP请求中的三次握手
  9. android 仿qq it蓝豹,十大Android开源项目-IT蓝豹
  10. HL-USB TO RS232驱动
  11. Android 12之启动画面Splash Screens(一) -- 适配
  12. 关于DES加密内部收费版
  13. 咪咕阅读怎么下载小说
  14. 针对在校大学生的C语言入门学习——高级语法
  15. 博客的WordPress地址(URL)修改后博客打不开解决方法
  16. 基频和倍频的概念_一倍频分析
  17. C语言主函数返回值含义
  18. Java基础(顺序结构)学习笔记
  19. ps照片处理器怎么打文字_什么是文字处理器?
  20. PB powerbuilder 仿EXCEL筛选V2

热门文章

  1. 0x00000001是个啥?十六进制表示
  2. Chrome浏览器安装visio插件
  3. RTools40的环境配置
  4. [2018]Detect-SLAM_ Making Object Detection and SLAM Mutually Beneficial
  5. VsCode乱码问题解决方法
  6. 按键助手 1.0 中文免费绿色版
  7. NASA登月计划再推迟!这次火箭发动机和主燃料箱都拉胯了
  8. 脾胃不好如何调理?做好以下几点
  9. 灼口综合症,通过舌头看五脏-脾胃
  10. 使用vuejs实现简单的图书增加删除功能