题解 | #学英语#

学英语

https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc

#include <iostream>
using namespace std;
#include <string>
#include <stack>

string num2str(char a) {
    string result;
    switch (a) {
        case '1':
            result = "one";
            break;
        case '2':
            result = "two";
            break;
        case '3':
            result = "three";
            break;
        case '4':
            result = "four";
            break;
        case '5':
            result = "five";
            break;
        case '6':
            result = "six";
            break;
        case '7':
            result = "seven";
            break;
        case '8':
            result = "eight";
            break;
        case '9':
            result = "nine";
            break;
    }
    return result;
}

string num2str2(char a) {
    string result;
    switch (a) {
        case '0':
            result = "ten";
            break;
        case '1':
            result = "eleven";
            break;
        case '2':
            result = "twelve";
            break;
        case '3':
            result = "thirteen";
            break;
        case '4':
            result = "fourteen";
            break;
        case '5':
            result = "fifteen";
            break;
        case '6':
            result = "sixteen";
            break;
        case '7':
            result = "seventeen";
            break;
        case '8':
            result = "eighteen";
            break;
        case '9':
            result = "nineteen";
            break;
    }
    return result;
}

string num2str3(char a) {
    string result;
    switch (a) {
        case '2':
            result = "twenty";
            break;
        case '3':
            result = "thirty";
            break;
        case '4':
            result = "forty";
            break;
        case '5':
            result = "fifty";
            break;
        case '6':
            result = "sixty";
            break;
        case '7':
            result = "seventy";
            break;
        case '8':
            result = "eighty";
            break;
        case '9':
            result = "ninety";
            break;
    }
    return result;
}

string str2cout(char a, char b) {
    string result;
    if (a == ' ') {
        result = num2str(b);
    } else if (b == '0' && a != '1' && a != '0') {
        result = num2str3(a);
    } else if (a == '0' && b == '0') {
        result = "ak";
    } else if(a == '0' && b !='0'){
        result = num2str(b);
    }else {
        if (a == '1') {
            result = num2str2(b);
        } else {
            result = num2str3(a) + " " + num2str(b);
        }
    }
    return result;
}



int main() {
    string num;
    stack<string> out;
    getline(cin, num);
    int cnt = 0;
    for (int i = num.size() - 1; i >= 0 ; i--, cnt++) {
        if (cnt == 0 || cnt == 3 || cnt == 6) {
            if (cnt == 3) {
                out.push("thousand");
            } else if (cnt == 6) {
                out.push("million");
            }
            if (num.size() - cnt >= 2) {
                out.push(str2cout(num[i - 1], num[i]));
            } else {
                out.push(str2cout(' ', num[i]));
            }
        } else if (cnt == 2 || cnt == 5) {
            if (out.top() != "ak") {
                if (num[i] != '0') {
                out.push("hundred and");
                out.push(str2cout(' ', num[i]));
                }
            } else {
                if (num[i] != '0') {
                    out.push("hundred");
                    out.push(str2cout(' ', num[i]));
                }

            }
        }
    }

    while (!out.empty()) {
        if (out.top() != "ak") {
            cout << out.top() << " ";
        }
        out.pop();
    }

}

全靠自己的逻辑写的,有点小乱。

主要是2位2位检查,再加上million等单位

华为机试刷题记录 文章被收录于专栏

记录一下手打代码的解题思路方便复习

全部评论

相关推荐

qq乃乃好喝到咩噗茶:院校后面加上211标签,放大加粗,招呼语也写上211
点赞 评论 收藏
分享
05-09 13:22
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务