string--OJ4
string--OJ4
- 1.反转字符串中的单词 III
- 2.字符串相乘
1.反转字符串中的单词 III
链接: link
class Solution {
public:string reverseWords(string s) {int pos = 0;int prpos = 0;string::iterator prit = s.begin();string::iterator it = prit;while ((pos = s.find(" ", pos)) != string::npos){it += pos-prpos;reverse(prit, it);prit = it + 1;prpos = pos;pos += 1;}reverse(prit, s.end());return s;}
};
2.字符串相乘
链接: link
class Solution {
public:string addStrings(string num1, string num2) {int sm=0,l1=num1.size(),l2=num2.size();string ans=""; while(l1||l2||sm){if(l1)sm+=num1[--l1]-'0';if(l2)sm+=num2[--l2]-'0';ans=char('0'+sm%10)+ans;sm/=10;}return ans;}
string multiply(string num1, string num2) {int mu = 0, l1 = num1.size() - 1, l2 = num2.size() - 1;string ans = "";string ret = "0";for (int i = l1; i >= 0; i--){char a = num1[i];for (int j = l2; j >= 0; j--){char b = num2[j];mu += (b - '0') * (a - '0');ans = char('0' + mu % 10) + ans;mu /= 10;}if(mu)ans = char('0' + mu) + ans;int ct = l1 - i;while (ct--){ans += '0';}ret = addStrings(ret, ans);ans = "";mu = 0;}if(ret.size()!=1){int k=0;while(k<ret.size()-1){if (ret[k] == '0'){ret.erase(k, 1);}elsebreak;}}return ret;
}};
心得:此题参考OJ1中字符串相加的解法,运行较慢,有待提高