4/05/2014

Leetcode -- Divide Two Integers

This one is hard....
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;  
   }  
 };  

No comments: