植村秀/Shu uemura 有free shipping 啦# Fashion - 美丽时尚
W*e
1 楼
Leetcode上的一题。Add binary。
我的解法是弄一个string c,让a和b都从尾部往前加,相加结果一共就四种情况,0,1,
2,3.我都分别作了处理。carr代表进位。把每位都从后往前记录在结果c中,最后返回c。
可是出来一个run time error:
Run Status: Runtime Error
Last executed input
"0", "0"
到底哪错了?
class Solution {
public:
string addBinary(string a, string b) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int len,i,lenA=a.length(),lenB=b.length(),carr=0;
len = lenA>lenB? lenA:lenB;
string c =lenA>lenB ? a : b;
int digitA,digitB;
c.at(len)='\0';
for(i=len-1;i>=0;i--)
{
digitA = lenA==0? 0:(a.at(lenA-1) -'0');
digitB = lenB==0? 0:(b.at(lenB-1) -'0');
if(digitA+digitB+carr==0)
{
c[i] = '0';
carr=0;
}
else if(digitA+digitB+carr==1)
{
c[i] = '1';
carr=0;
}
else if(digitA+digitB+carr==2)
{
c[i] = '0';
carr=1;
}
else if(digitA+digitB+carr==3)
{
c[i] = '1';
carr=1;
}
if(lenA>0)
lenA--;
if(lenB>0)
lenB--;
}
return c;
}
};
我的解法是弄一个string c,让a和b都从尾部往前加,相加结果一共就四种情况,0,1,
2,3.我都分别作了处理。carr代表进位。把每位都从后往前记录在结果c中,最后返回c。
可是出来一个run time error:
Run Status: Runtime Error
Last executed input
"0", "0"
到底哪错了?
class Solution {
public:
string addBinary(string a, string b) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int len,i,lenA=a.length(),lenB=b.length(),carr=0;
len = lenA>lenB? lenA:lenB;
string c =lenA>lenB ? a : b;
int digitA,digitB;
c.at(len)='\0';
for(i=len-1;i>=0;i--)
{
digitA = lenA==0? 0:(a.at(lenA-1) -'0');
digitB = lenB==0? 0:(b.at(lenB-1) -'0');
if(digitA+digitB+carr==0)
{
c[i] = '0';
carr=0;
}
else if(digitA+digitB+carr==1)
{
c[i] = '1';
carr=0;
}
else if(digitA+digitB+carr==2)
{
c[i] = '0';
carr=1;
}
else if(digitA+digitB+carr==3)
{
c[i] = '1';
carr=1;
}
if(lenA>0)
lenA--;
if(lenB>0)
lenB--;
}
return c;
}
};