string--OJ4
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);
}
else
break;
}
}
return ret;
}
};
心得:此题参考OJ1中字符串相加的解法,运行较慢,有待提高