@@ -71,6 +71,69 @@ string multiply(string num1, string num2) {
7171}
7272
7373
74+ /* *********************************************************************************
75+ * Another implementation
76+ **********************************************************************************/
77+
78+ class Solution {
79+ public:
80+
81+ string strPlus (string& num1, string& num2) {
82+ if (num1.size ()==0 ) return num2;
83+ if (num2.size ()==0 ) return num1;
84+
85+ if ( num1.size () < num2.size () ) {
86+ swap (num1, num2);
87+ }
88+
89+ string s;
90+ int carry=0 ;
91+ int x;
92+ for (int i=num1.size ()-1 , j=num2.size ()-1 ; i>=0 ; i--, j--) {
93+ x = num1[i]-' 0' + carry;
94+ if (j>=0 ){
95+ x += num2[j]-' 0' ;
96+ }
97+ s.insert (s.begin (), x%10 +' 0' );
98+ carry = x/10 ;
99+ }
100+ if (carry>0 ) {
101+ s.insert (s.begin (), carry+' 0' );
102+ }
103+
104+ return s;
105+ }
106+
107+
108+ string multiply (string num1, string num2) {
109+
110+ if (num1.size ()<=0 || num2.size ()<=0 ) return " " ;
111+
112+ string result;
113+ for ( int i=num1.size ()-1 ; i>=0 ; i--) {
114+ int carry = 0 ;
115+ string val;
116+ for ( int j=num2.size ()-1 ; j>=0 ; j--) {
117+ int v = (num2[j]-' 0' ) * (num1[i]-' 0' ) + carry;
118+ val.insert (val.begin (), v%10 +' 0' );
119+ carry = v/10 ;
120+ }
121+ if (carry) val.insert (val.begin (), carry+' 0' );
122+ for (unsigned int j=i; j<num1.size ()-1 ; j++) {
123+ val.push_back (' 0' );
124+ }
125+ result = strPlus (result, val);
126+ }
127+
128+ // check if it is zero
129+ if (result[0 ]==' 0' ) return " 0" ;
130+ return result;
131+
132+ }
133+ };
134+
135+
136+
74137int main (int argc, char **argv)
75138{
76139 string s1=" 20" ;
0 commit comments