Untitled
unknown
c_cpp
3 years ago
1.8 kB
12
Indexable
#include <bits/stdc++.h>
using namespace std;
string convert(string s) {
string chal = "w1z3qmbi";
unordered_set<char> st;
for (int i = 0; i < chal.size(); i++)
st.insert(chal[i]);
string ans = "";
for (int i = 0; i < s.size(); i++) {
if (st.count(s[i])) ans += "--" + string(1, s[i]) + "--";
else ans.push_back(s[i]);
}
return ans;
}
string solve(string s) {
unordered_map<int, string> mp {
{0, "zero"},
{1, "one"},
{2, "two"},
{3, "three"},
{4, "four"},
{5, "five"},
{6, "six"},
{7, "seven"},
{8, "eight"},
{9, "nine"},
};
vector<string> v {
"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"
};
int num = 0;
int sign = 1;
int sum = 0;
while (s.size() > 0) {
if (s.rfind("plus", 0) == 0) {
sum += num * sign;
num = 0;
sign = 1;
s = s.substr(4);
} else if (s.rfind("minus", 0) == 0) {
sum += num * sign;
num = 0;
sign = -1;
s = s.substr(5);
} else {
for (int i = 0; i < v.size(); i++) {
if (s.rfind(v[i], 0) == 0) {
num = num * 10 + i;
s = s.substr(v[i].size());
break;
}
}
}
}
sum += num * sign;
string output = "";
if (sum < 0) {
output += "negative";
sum *= -1;
}
string sum_str = to_string(sum);
for (int i = 0; i < sum_str.size(); i++) {
output += mp[sum_str[i] - '0'];
}
return convert(output);
}
Editor is loading...