力扣题:字符的统计-12.2

力扣题-12.2

[力扣刷题攻略] Re:从零开始的力扣刷题生活

力扣题1:423. 从英文中重建数字

解题思想:有的单词通过一个字母就可以确定,依次确定即可

力扣题:字符的统计-12.2_第1张图片

class Solution(object):
    def originalDigits(self, s):
        """
        :type s: str
        :rtype: str
        """
        char_count = {}
        t = 'egfihonsrutwvxz'
        for i in range(len(t)):
            char_count[t[i]] = 0
        for i in range(len(s)):
            if s[i] in char_count:
                char_count[s[i]] += 1
            else:
                char_count[s[i]] = 1
        result = []
        if char_count['z']!=0:
            for i in range(char_count['z']):
                result.append(0)
                temp = 'zero'
                for i in range(len(temp)):
                    char_count[temp[i]] -=1
        if char_count['x']!=0:
            for i in range(char_count['x']):
                result.append(6)
                temp = 'six'
                for i in range(len(temp)):
                    char_count[temp[i]] -=1
        if char_count['w']!=0:
            for i in range(char_count['w']):
                result.append(2)
                temp = 'two'
                for i in range(len(temp)):
                    char_count[temp[i]] -=1
        if char_count['g']!=0:
            for i in range(char_count['g']):
                result.append(8)
                temp = 'eight'
                for i in range(len(temp)):
                    char_count[temp[i]] -=1
        if char_count['s']!=0:
            for i in range(char_count['s']):
                result.append(7)
                temp = 'seven'
                for i in range(len(temp)):
                    char_count[temp[i]] -=1
        if char_count['h']!=0:
            for i in range(char_count['h']):
                result.append(3)
                temp = 'three'
                for i in range(len(temp)):
                    char_count[temp[i]] -=1
        if char_count['v']!=0:
            for i in range(char_count['v']):
                result.append(5)
                temp = 'five'
                for i in range(len(temp)):
                    char_count[temp[i]] -=1
        if char_count['f']!=0:
            for i in range(char_count['f']):
                result.append(4)
                temp = 'four'
                for i in range(len(temp)):
                    char_count[temp[i]] -=1
        if char_count['o']!=0:
            for i in range(char_count['o']):
                result.append(1)
                temp = 'one'
                for i in range(len(temp)):
                    char_count[temp[i]] -=1
        if char_count['i']!=0:
            for i in range(char_count['i']):
                result.append(9)
                temp = 'nine'
                for i in range(len(temp)):
                    char_count[temp[i]] -=1
        return ''.join(map(str, sorted(result)))
class Solution {
public:
    std::string originalDigits(std::string s) {
        std::unordered_map<char, int> charCount;
        std::string t = "egfihonsrutwvxz";

        for (char c : t) {
            charCount[c] = 0;
        }

        for (char c : s) {
            if (charCount.find(c) != charCount.end()) {
                charCount[c] += 1;
            }
        }

        std::vector<int> result;

        if (charCount['z'] != 0) {
            int count = charCount['z'];
            for (int i = 0; i < count; ++i) {
                result.push_back(0);
                std::string temp = "zero";
                for (char c : temp) {
                    charCount[c] -= 1;
                }
            }
        }

        if (charCount['x'] != 0) {
            int count = charCount['x'];
            for (int i = 0; i < count; ++i) {
                result.push_back(6);
                std::string temp = "six";
                for (char c : temp) {
                    charCount[c] -= 1;
                }
            }
        }

        if (charCount['w'] != 0) {
            int count = charCount['w'];
            for (int i = 0; i < count; ++i) {
                result.push_back(2);
                std::string temp = "two";
                for (char c : temp) {
                    charCount[c] -= 1;
                }
            }
        }

        if (charCount['g'] != 0) {
            int count = charCount['g'];
            for (int i = 0; i < count; ++i) {
                result.push_back(8);
                std::string temp = "eight";
                for (char c : temp) {
                    charCount[c] -= 1;
                }
            }
        }
        if (charCount['s'] != 0) {
            int count = charCount['s'];
            for (int i = 0; i < count; ++i) {
                result.push_back(7);
                std::string temp = "seven";
                for (char c : temp) {
                    charCount[c] -= 1;
                }
            }
        }

        if (charCount['h'] != 0) {
            int count = charCount['h'];
            for (int i = 0; i < count; ++i) {
                result.push_back(3);
                std::string temp = "three";
                for (char c : temp) {
                    charCount[c] -= 1;
                }
            }
        }

        if (charCount['v'] != 0) {
            int count = charCount['v'];
            for (int i = 0; i < count; ++i) {
                result.push_back(5);
                std::string temp = "five";
                for (char c : temp) {
                    charCount[c] -= 1;
                }
            }
        }
        
        if (charCount['f'] != 0) {
            int count = charCount['f'];
            for (int i = 0; i < count; ++i) {
                result.push_back(4);
                std::string temp = "four";
                for (char c : temp) {
                    charCount[c] -= 1;
                }
            }
        }
        if (charCount['o'] != 0) {
            int count = charCount['o'];
            for (int i = 0; i < count; ++i) {
                result.push_back(1);
                std::string temp = "one";
                for (char c : temp) {
                    charCount[c] -= 1;
                }
            }
        }

        if (charCount['i'] != 0) {
            int count = charCount['i'];
            for (int i = 0; i < count; ++i) {
                result.push_back(9);
                std::string temp = "nine";
                for (char c : temp) {
                    charCount[c] -= 1;
                }
            }
        }

        std::sort(result.begin(), result.end());

        std::string resultString;
        for (int digit : result) {
            resultString += std::to_string(digit);
        }

        return resultString;
    }
};

你可能感兴趣的:(leetcode)