class Solution {
public:
int divide(int dividend, int divisor) {
if(!divisor) {
return 0;
}
int r = 0;
bool sign = (dividend > 0 && divisor > 0) || (dividend < 0 && divisor < 0)? true: false;
long long dvend = dividend;
dvend = abs(dvend);
long long dvsor = divisor;
dvsor = abs(dvsor);
string num = to_string(dvend);
long long digits = 0;
string result;
for(int i = 0; i < num.length(); ++i) {
digits += num[i] - '0';
if(digits >= dvsor) {
long long r = 0;
long long total = 0;
long long temp = digits;
while (total + dvsor <= digits) {
total += dvsor;
r++;
}
for(int j = 0; j < r; j++) {
digits -= dvsor;
}
result += r + '0';
} else {
result += '0';
}
int base = digits;
for(int j = 0;j < 9; j++) {
digits += base;
}
}
long long value;
istringstream buffer(result);
buffer >> value;
return sign? value: -value;
}
};
4/05/2014
Leetcode -- Divide Two Integers
This one is hard....
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment