博客主页:PH_modest的博客主页
当前专栏:每日一题
其他专栏:
每日反刍
读书笔记
C语言跬步积累
座右铭:广积粮,缓称王!
题目链接:1017.负二进制转换 - 力扣(LeetCode)
思路和二进制转换一样,都是除基取余,倒序排列,不过这题需要注意符号。
即先取模判断能否整除基数,能的话赋值为0,不能就赋值为1,然后将该数再除以这个基数,本题需要用到绝对值函数abs()
char * baseNeg2(int n)
{
char* arr=(char*)malloc(sizeof(char)*100);
char* ret=(char*)malloc(sizeof(char)*100);
int i=0;
int j=0;
int r=0;
if(n==0)
{
arr[i++]='0';
arr[i]='\0';
return arr;
}
while(n)
{
if(abs(n)%2==0)
{
arr[i++]='0';
n=-(n/2);
}
else
{
arr[i++]='1';
n=-((n-1)/2);
}
}
arr[i]='\0';
r=i;
for(j=0;j<i;j++)
{
ret[j]=arr[--r];
}
ret[j] = '\0';
return ret;
}
每日一题系列旨在养成刷题的习惯,所以对代码的解释并不会特别详细,但足够引导大家写出来,选的题目都不会特别难,但也不是特别简单,比较考验大家的基础和应用能力,我希望能够将这个系列一直写下去,也希望大家能够和我一起坚持每天写代码。
在这里送大家一句话:广积粮,缓称王!