去某软面试 面试官给个题上黑板做,写个算法 求95转2进制后1的个数。

我在黑板上敲了

static int count = 0;
/// <summary>
/// 获取10进制数转2进制后中1的个数
/// </summary>
public static void BinCount(int a)
{
int n = -1;
int b = 0;
while(b<=a)
{
n++;
b = (int)Math.Pow(2, n);
}
count++;
var m = (int)Math.Pow(2, n - 1);
if (a - m <= 0)
{
return;
}
BinCount(a - m);
}

  下面是main函数调用  返回的结果是6 完全正确。

static void Main(string[] args)
{
BinCount(95);
var binCount= count;
}

 其实面试官是考你怎么把10进制转成2进制 要求写出10进制转2进制的算法

于是乎我又写了如下:

        static string str =string.Empty;
/// <summary>
/// 10进制转2进制
/// </summary>
/// <param name="a"></param>
public static void GetBinary(int a)
{
if(a % 2 == 0)
{
str += "0";
}
else
{
str += "1";
}
if(a / 2<1)
{
return;
}
GetBinary(a / 2);
}  

应该用

StringBuilder 只有一个指针 不然空间会浪费很多

下面是main 函数调用 结果是 1111101

static void Main(string[] args)
{ GetBinary(95);
var binarya = str;
}

  好吧 结果 是反的,那再考你一个 字符串反转。给你个 “abcd”  给我返回“dcba”

我又写了下面反转方法:

/// <summary>
/// char数组反转
/// </summary>
/// <param name="str"></param>
public static void Reverse(char[] str)
{
if (str == null)
{
return;//空判断这个细节一定不能漏
}
int i = 0;
while(i<str.Length-1-i)
{
var tem = str[i];
str[i] = str[str.Length -1- i];
str[str.Length -1- i] = tem;
i++;
}
}

  于是乎 二进制的也就完整了  返回的binary =1011111

static void Main(string[] args)
{ GetBinary(95);
var binary = str;
char[] arr = str.ToCharArray();
Reverse(arr);
binary = new string(arr);
}

  

c#十进制转二进制算法 和字符串反转算法的更多相关文章

  1. Java算法之字符串反转分析

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 在基本的工作内容开发中,算法不会显得那么重要,而在百万级别的时候,差距非常大,今天带大家研究下常见的 ...

  2. 趣味算法:字符串反转的N种方法(转)

    老赵在反对北大青鸟的随笔中提到了数组反转.这的确是一道非常基础的算法题,然而也是一道很不平常的算法题(也许所有的算法深究下去都会很不平常).因为我写着写着,就写出来8种方法……现在我们以字符串的反转为 ...

  3. 关于一道面试题,使用C#实现字符串反转算法

    关于一道面试题,使用C#实现字符串反转算法. 题目见http://student.csdn.net/space.php?do=question&ac=detail&qid=490 详细 ...

  4. 算法之--字符串反转【python实现】

    题目描述 给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符'a'和'b'移动到字符串的尾部,使得原字符串变成字符串“cdefab”.请写一个函数 ...

  5. 线程安全使用(四) [.NET] 简单接入微信公众号开发:实现自动回复 [C#]C#中字符串的操作 自行实现比dotcore/dotnet更方便更高性能的对象二进制序列化 自已动手做高性能消息队列 自行实现高性能MVC WebAPI 面试题随笔 字符串反转

    线程安全使用(四)   这是时隔多年第四篇,主要是因为身在东软受内网限制,好多文章就只好发到东软内部网站,懒的发到外面,现在一点点把在东软写的文章给转移出来. 这里主要讲解下CancellationT ...

  6. 小白学python之整型,布尔值,十进制二进制转换和字符串详解for循环!

    整型与字符串转化 十进制转二进制. python2,存在int 整型和long(长整型),在python3里就是int/获取的是浮点数 小数 print(bin(15)) 这样可以通过代码来计算十进制 ...

  7. 前端与算法 leetcode 344. 反转字符串

    目录 # 前端与算法 leetcode 344. 反转字符串 题目描述 概要 提示 解析 解法一:双指针 解法二:递归 算法 传入测试用例的运行结果 执行结果 GitHub仓库 # 前端与算法 lee ...

  8. Go语言十进制转二进制字符串

    Go语言十进制转二进制字符串 代码Demo func Test_2(t *testing.T) { // 方法一 fmt.Println(DecToBin(5)) // 方法二:导入包"gi ...

  9. 十进制二进制之间的转化 PHP算法

    [ 十进制转二进制 ] function test($var){ $func = function($i){ if($i < 2){ return $i; } $return['int'] = ...

随机推荐

  1. node+mongoose+vue

    app.js 入门 let express = require('express'); let app = express(); let allowCrossDomain = function (re ...

  2. Android Frameworks的base目录内容分析 “Android Frameworks base”

    Framework文件夹中base目录下文件分类: Android系统结构框架: Android Framework层各文件夹功能分类:

  3. c++11 线程池

    也可参考: https://www.cnblogs.com/ailumiyana/p/10016965.html *** https://blog.csdn.net/jlusuoya/article/ ...

  4. 杭电1257 dp(java)

    最少拦截系统 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的 ...

  5. phantomjs 中文文档

    phantomjs 中文文档 转载 入门教程:转载 http://www.cnblogs.com/front-Thinking/p/4321720.html 1.介绍 简介   PhantomJS是一 ...

  6. HTML5_canvas 画布

    <canvas></canvas> 画布 <canvas id="my_canvas" width="400" height=&q ...

  7. 【C++ 实验六 继承与派生】

    实验内容 1. 某计算机硬件系统,为了实现特定的功能,在某个子模块设计了 ABC 三款芯片用于 数字计算.各个芯片的计算功能如下: A 芯片:计算两位整数的加法(m+n).计算两位整数的减法(m-n) ...

  8. PDF文件怎么转换成PPT

    在日常办公中大家都会发现PDF文件目前是比较常见的一种文件,有的时候大家会需要将PDF转换成PPT为了去更好的演示,毕竟PPT文件在演示方面具有着较好的特点,那如何将PDF文件转换成PPT文件呢,今天 ...

  9. ASP.NET Core 问题排查:Request.EnableRewind 后第一次读取不到 Request.Body

    实际应用场景是将用户上传的文件依次保存到阿里云 OSS 与腾讯云 COS ,实现方式是在启用 Request.EnableRewind() 的情况下通过 Request.Body 读取流,并依次通过 ...

  10. 关于python列表和元组的基本操作

    一.列表 列表是python中最常出现的一种数据存储形式,掌握列表的基本操作可以快速而有效的提高我们的代码书写效率.列表中存放的数据有如下基本操作:如增.删.改.查,掌握了这四个操作,就基本掌握了列表 ...