Skip to content

Commit 8903e04

Browse files
author
YILING
committed
[43. MultiplyStrings] solution by using cstring / string
1 parent 9ea5371 commit 8903e04

File tree

4 files changed

+67
-2
lines changed

4 files changed

+67
-2
lines changed

LeetCode.xcodeproj/project.pbxproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
/* Begin PBXBuildFile section */
1010
6DEF8F5F1E75A0EC0028351C /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6DEF8F5E1E75A0EC0028351C /* main.cpp */; };
1111
6DEF8F671E75A1780028351C /* 1_two_sum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6DEF8F651E75A1780028351C /* 1_two_sum.cpp */; };
12+
6DEF8F6A1E76E0F50028351C /* 43_Multiply_Strings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6DEF8F681E76E0F50028351C /* 43_Multiply_Strings.cpp */; };
1213
/* End PBXBuildFile section */
1314

1415
/* Begin PBXCopyFilesBuildPhase section */
@@ -28,6 +29,8 @@
2829
6DEF8F5E1E75A0EC0028351C /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
2930
6DEF8F651E75A1780028351C /* 1_two_sum.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = 1_two_sum.cpp; sourceTree = "<group>"; };
3031
6DEF8F661E75A1780028351C /* 1_two_sum.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = 1_two_sum.hpp; sourceTree = "<group>"; };
32+
6DEF8F681E76E0F50028351C /* 43_Multiply_Strings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = 43_Multiply_Strings.cpp; sourceTree = "<group>"; };
33+
6DEF8F691E76E0F50028351C /* 43_Multiply_Strings.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = 43_Multiply_Strings.hpp; sourceTree = "<group>"; };
3134
/* End PBXFileReference section */
3235

3336
/* Begin PBXFrameworksBuildPhase section */
@@ -63,6 +66,8 @@
6366
6DEF8F5E1E75A0EC0028351C /* main.cpp */,
6467
6DEF8F651E75A1780028351C /* 1_two_sum.cpp */,
6568
6DEF8F661E75A1780028351C /* 1_two_sum.hpp */,
69+
6DEF8F681E76E0F50028351C /* 43_Multiply_Strings.cpp */,
70+
6DEF8F691E76E0F50028351C /* 43_Multiply_Strings.hpp */,
6671
);
6772
path = LeetCode;
6873
sourceTree = "<group>";
@@ -125,6 +130,7 @@
125130
buildActionMask = 2147483647;
126131
files = (
127132
6DEF8F671E75A1780028351C /* 1_two_sum.cpp in Sources */,
133+
6DEF8F6A1E76E0F50028351C /* 43_Multiply_Strings.cpp in Sources */,
128134
6DEF8F5F1E75A0EC0028351C /* main.cpp in Sources */,
129135
);
130136
runOnlyForDeploymentPostprocessing = 0;
@@ -252,6 +258,7 @@
252258
6DEF8F641E75A0EC0028351C /* Release */,
253259
);
254260
defaultConfigurationIsVisible = 0;
261+
defaultConfigurationName = Release;
255262
};
256263
/* End XCConfigurationList section */
257264
};

LeetCode/43_Multiply_Strings.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
//
2+
// 43_Multiply_Strings.cpp
3+
// LeetCode
4+
//
5+
// Created by Yi-Ling Wu on 13/03/2017.
6+
// Copyright © 2017 YILING. All rights reserved.
7+
//
8+
9+
#include "43_Multiply_Strings.hpp"
10+
11+
std::string MultiplyStrings::multiply(std::string num1, std::string num2) {
12+
std::string s(1000,'0');
13+
reverse(num1.begin(), num1.end());
14+
reverse(num2.begin(), num2.end());
15+
for(int i = 0; i < num1.length(); i++) {
16+
for(int j = 0;j < num2.length(); j++) {
17+
int temp = (num1[i] - '0') * (num2[j] - '0');
18+
s[i+j+1] = s[i+j+1] - '0' + (s[i+j] - '0' + temp) / 10 + '0';
19+
s[i+j] = (s[i+j] - '0'+ temp) % 10 + '0';
20+
}
21+
}
22+
reverse(s.begin(),s.end());
23+
if(s.find_first_not_of('0') == std::string::npos)
24+
return "0";
25+
else
26+
return s.substr(s.find_first_not_of('0'));
27+
}

LeetCode/43_Multiply_Strings.hpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
//
2+
// 43_Multiply_Strings.hpp
3+
// LeetCode
4+
//
5+
// Created by Yi-Ling Wu on 13/03/2017.
6+
// Copyright © 2017 YILING. All rights reserved.
7+
//
8+
9+
#ifndef _3_Multiply_Strings_hpp
10+
#define _3_Multiply_Strings_hpp
11+
12+
#include <stdio.h>
13+
#include <cstring>
14+
#include <string>
15+
16+
// Ref: http://blog.csdn.net/nk_test/article/details/48912763
17+
class MultiplyStrings {
18+
public:
19+
std::string multiply(std::string num1, std::string num2);
20+
};
21+
#endif /* _3_Multiply_Strings_hpp */

LeetCode/main.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,25 @@
77
//
88

99
#include <iostream>
10+
#include <cstring>
11+
#include <string>
1012
#include "1_two_sum.hpp"
13+
#include "43_Multiply_Strings.hpp"
1114

1215
int main(int argc, const char * argv[]) {
1316

1417
// Test_1: TwoSum
15-
TwoSum *twosum = new TwoSum;
18+
/*TwoSum *twosum = new TwoSum;
1619
std::vector<int> nums = {3,2,4};
1720
int target = 6;
1821
std::vector<int> result = twosum->twoSum(nums, target);
1922
return 0;
20-
23+
*/
24+
25+
// Teset_2:
26+
MultiplyStrings *mutiplyString = new MultiplyStrings;
27+
std::string num1 = "29292999";
28+
std::string num2 = "329393939";
29+
std::string result = mutiplyString->multiply(num1, num2);
30+
return 0;
2131
}

0 commit comments

Comments
 (0)