@@ -71,6 +71,69 @@ string multiply(string num1, string num2) {
71
71
}
72
72
73
73
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
+
74
137
int main (int argc, char **argv)
75
138
{
76
139
string s1=" 20" ;
0 commit comments