leetcode405
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的更多相关文章
- [Swift]LeetCode405. 数字转换为十六进制数 | Convert a Number to Hexadecimal
Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s compl ...
随机推荐
- CUDA npp运动检测模块性能测试
测试环境: Cpu: Intel(R)Core(TM)i7-4790 CPU @3.6GHZ GPU: NVIDIA GeForce GTX960 *2 操作系统: Wi ...
- day35 python学习GIL解释器锁
二 GIL介绍 GIL本质就是一把互斥锁,既然是互斥锁,所有互斥锁的本质都一样,都是将并发运行变成串行,以此来控制同一时间内共享数据只能被一个任务所修改,进而保证数据安全. 可以肯定的一点是:保护不同 ...
- dbt seed 以及base ephemeral使用
seed 可以方便的进行数据的导入,可以方便的进行不变数据(少量)以及测试数据的导入, base 设置为 ephemeral(暂态),这个同时也是官方最佳实践的建议 项目依赖的gitlab 数据可以参 ...
- benthos 几个方便的帮助命令
benthos 的命令行帮助做的是比较方便的,基本上就是一个自包含的帮助文档 全部命令 benthos --help 查询系统支持的caches benthos -list-caches 说明 使用帮 ...
- 走进windows编程的世界-----消息处理函数(1)
Win32消息机制 过程驱动:程序是依照我们预先定义好的顺序运行.每运行一步,下一步都已经依照预定的顺序 继续运行,直至程序结束. 事件驱动:程序的运行顺序是无序的.某个时间点所运行的 ...
- 怎样在两小时内搞定 OpenStack 部署?(转)
怎样在两小时内搞定 OpenStack 部署? OpenStack的安装是一个难题,组件众多,非常麻烦.如果手工部署OpenStack,可能需要好几天,使用RDO,就是几个命令,再加一两个小时的等待. ...
- Oracle误删除表空间的恢复
对于误删除表空间的恢复,本文通过基于数据库的时间点恢复和基于表空间的时间点恢复分别加以讨论 一 通过基于数据库的时间点恢复被误删除的表空间 1 需要注意的事项 a 基于数据库的时间点恢复将会回退整个数 ...
- mac os 里的 JAVA_HOME
google了一下,发现了这篇文章Important Java Directories on Mac OS X(https://developer.apple.com/library/content/ ...
- HTTP协议中的长连接、短连接、长轮询、短轮询
长连接.短连接,指的是TCP连接.长连接是为了复用TCP连接. 长轮询中,服务器如果检测到库存量没有变化的话,将会把当前请求挂起一段时间(这个时间也叫作超时时间,一般是几十秒).在这个时间里,服务器会 ...
- Linux基本权限管理
一. 文件基本权限 1. - 文件类型,第一个字符为-,代表是文件类型(-文件 d目录 | 软链接文件) 2. 总共10个字符,2~10 总共9个字符,每三个字符为一组 rw- ...