public class Solution
{
string ConverToHex(string bit)
{
var s = "";
switch (bit)
{
case "":
s = "";
break;
case "":
s = "";
break;
case "":
s = "";
break;
case "":
s = "";
break;
case "":
s = "";
break;
case "":
s = "";
break;
case "":
s = "";
break;
case "":
s = "";
break;
case "":
s = "";
break;
case "":
s = "";
break;
case "":
s = "a";
break;
case "":
s = "b";
break;
case "":
s = "c";
break;
case "":
s = "d";
break;
case "":
s = "e";
break;
case "":
s = "f";
break;
}
return s;
} public string ToHex(int num)
{
var fuhao = ;
if (num < )
{
fuhao = -;
num = num * (-);
} //10进制转16进制,负数使用补码
var bitAry = new string[];
for (int i = ; i < bitAry.Length; i++)
{
bitAry[i] = "";
}
//STEP1:十进制转二进制
int index = ;
do
{
var x = num % ;
bitAry[index++] = x.ToString();
num = num / ;
} while (num != ); var list = bitAry.ToList(); //STEP2:正数使用原码,负数转补码
if (fuhao == -)
{
list.Clear(); bitAry[bitAry.Length - ] = "";//符号为设置为0 //计算反码
StringBuilder sbFan = new StringBuilder();
for (int i = ; i < bitAry.Length - ; i++)
{
if (bitAry[i] == "")
{
sbFan.Append("");
}
else
{
sbFan.Append("");
}
}
sbFan.Append("");//index=31的是符号位 //反码加1 var fanma = sbFan.ToString(); var step = ;
var first = true;
for (int i = ; i < fanma.Length - ; i++)
{
var x = Convert.ToInt32(fanma[i].ToString());
if (first)
{
first = false;
x = (x + ) % ;
list.Add(x.ToString());
if (x == )
{
step = ;
}
else
{
step = ;
}
}
else
{
list.Add(((x + step) % ).ToString());
if (x == && step == )
{
step = ;
}
else
{
step = ;
}
}
}
list.Add("");
} //STEP3:二进制转十六进制
string result = ""; if (fuhao == -)//负数
{
var temp = "";
for (int i = ; i < list.Count; i++)
{ if ((i + ) % != )//0,1,2
{
temp = list[i] + temp;
}
else
{
temp = list[i] + temp;
var hex = ConverToHex(temp);
result = hex + result;
temp = "";
}
}
}
else//正数
{
var temp = "";
for (int i = ; i < list.Count; i++)
{
if ((i + ) % != )
{
temp = list[i] + temp;
}
else
{
temp = list[i] + temp;
var hex = ConverToHex(temp);
result = hex + result;
temp = "";
} } } var notZeroIndex = -;
for (int i = ; i < result.Length; i++)
{
if (result[i] != '')
{
notZeroIndex = i;
break;
}
}
if (notZeroIndex > )
{
result = result.Substring(notZeroIndex);
} if (result == "")
{
result = "";
} return result;
}
}

https://leetcode.com/problems/convert-a-number-to-hexadecimal/#/description

leetcode405的更多相关文章

  1. [Swift]LeetCode405. 数字转换为十六进制数 | Convert a Number to Hexadecimal

    Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s compl ...

随机推荐

  1. hdu2072 单词数 字典树

    字典树裸题 #include<stdio.h> #include<string.h> ][]; ]; int cnt; int ans; void Insert(char *w ...

  2. python表单验证封装

    在Web程序中往往包含大量的表单验证的工作,如:判断输入是否为空,是否符合规则. <!DOCTYPE html><html><head lang="en&quo ...

  3. leetcode:Minimum Depth of Binary Tree【Python版】

    1.类中递归调用添加self: 2.root为None,返回0 3.root不为None,root左右孩子为None,返回1 4.返回l和r最小深度,l和r初始为极大值: # Definition f ...

  4. mysql和redis加入到windows服务

    mysql加入到windows服务: mysqld --install  Mysql5.6 mysqld --remove mysql5.6  从windows的服务中删除mysql服务 net st ...

  5. 监控分析——Web中间件

    发现 中间件监控看是否有性能瓶颈 核心:主要看中间件的线性池进程池有没有排队情况,请求是否处理及时就OK Apache 以前php都是用apache,现在基本用nginx了. 首先自己启动apache ...

  6. Windows nginx php cgi-fcgi 配置 xdebug

    之前使用的是 Apache + PHP,不用怎么配置就可以. 由于服务器用的是 nginx,为了和服务器一致,所以本地开发也改为 nginx. 开始只是简单的开启 xdebug, 发现并不行. 找了一 ...

  7. md5,base64,rsa

    MD5功能:    输入任意长度的信息,经过处理,输出为128位的信息(数字指纹):    不同的输入得到的不同的结果(唯一性):    根据128位的输出结果不可能反推出输入的信息(不可逆): 1. ...

  8. django model 插入数据方法

    需要插入的数据表结构如下: class UserInfo(models.Model): user_id =models.AutoField(primary_key=True) user_name=mo ...

  9. numpy之meshgrid和where

    meshgrid np.meshgrid() np.meshgrid从坐标向量返回坐标矩阵. 这样说可能很抽象.举个例子. x = np.arange(-2,2) y = np.arange(0,3) ...

  10. Dynamics CRM 2011 怎么根据记录的etc参数值找到实体英文名和根据etc参数值或英文名称找到其实体中文名称

    一.平常我们可以打开CRM2011一条已创建的记录,通过JScript方法获取实体英文名的方法是:按F12,输入contentIFrame.Xrm.Page.data.entity.getEntity ...