LeetCode—67. 二進位制求和
阿新 • • 發佈:2018-12-24
這題總體思路有點像兩個線性表的合併,有個知識點花了很長時間,函式傳回字串,詳見上一篇
char *S(char *b)
{
char *s;
return s;
}
這個s是傳不回去的,因為在函式體裡面定義,是區域性變數。
#include <stdio.h> #include <stdlib.h> #include <string.h> char *addBinary(char * a, char * b) { int lena,lenb,len=0,num_a,num_b,i,j,jin=0; int s[100]; char ss[100]; lena=strlen(a); lenb=strlen(b); i=lena-1; j=lenb-1; //printf("a%d b%d\n",lena,lenb); while(i!=-1&&j!=-1) { num_a=a[i]-'0'; num_b=b[j]-'0'; s[len]=(num_a+num_b+jin)%2; jin=(num_a+num_b+jin)/2; len++; i--; j--; } while(i!=-1) { num_a=a[i]-'0'; s[len]=(num_a+jin)%2; jin=(num_a+jin)/2; len++; i--; } while(j!=-1) { num_b=b[j]-'0'; s[len]=(num_b+jin)%2; jin=(num_b+jin)/2; len++; j--; } if(jin==0) { for(i=len-1;i>=0;i--) ss[len-i-1]=s[i]+'0'; ss[len]='\0'; } else { for(i=len-1;i>=0;i--) ss[len-i]=s[i]+'0'; ss[0]='1'; ss[++len]='\0'; } a=ss; puts(a); return a; } int main() { char a[]= "11", b[] = "1"; // printf("a%d b%d\n",a,b); //char *ss; printf("%s\n",a); return 0; }