diff options
| author | Yuqian Yang <crupest@crupest.life> | 2025-02-12 15:55:21 +0800 | 
|---|---|---|
| committer | Yuqian Yang <crupest@crupest.life> | 2025-02-12 16:04:50 +0800 | 
| commit | 77e6cdc863d2cbd9df578a665804daf28d8593fe (patch) | |
| tree | 62c9f3e071d8d1d6fe125fe801907db11784332e /works/solutions/leetcode/cpp/17.cpp | |
| parent | 10eb95869601e145b1d8bc909424777c25752d51 (diff) | |
| parent | a557fa36a22c5ef4a29da596ee1e3aa10be55984 (diff) | |
| download | crupest-77e6cdc863d2cbd9df578a665804daf28d8593fe.tar.gz crupest-77e6cdc863d2cbd9df578a665804daf28d8593fe.tar.bz2 crupest-77e6cdc863d2cbd9df578a665804daf28d8593fe.zip | |
import(solutions): IMPORT crupest/solutions COMPLETE.
Diffstat (limited to 'works/solutions/leetcode/cpp/17.cpp')
| -rw-r--r-- | works/solutions/leetcode/cpp/17.cpp | 56 | 
1 files changed, 56 insertions, 0 deletions
| diff --git a/works/solutions/leetcode/cpp/17.cpp b/works/solutions/leetcode/cpp/17.cpp new file mode 100644 index 0000000..74e33b4 --- /dev/null +++ b/works/solutions/leetcode/cpp/17.cpp @@ -0,0 +1,56 @@ +#include <string>
 +#include <vector>
 +
 +using std::string;
 +using std::vector;
 +
 +vector<char> c_map[9]{
 +    {'a', 'b', 'c'},
 +    {'d', 'e', 'f'},
 +    {'g', 'h', 'i'},
 +    {'j', 'k', 'l'},
 +    {'m', 'n', 'o'},
 +    {'p', 'q', 'r', 's'},
 +    {'t', 'u', 'v'},
 +    {'w', 'x', 'y', 'z'}};
 +
 +void combine(const string::const_iterator ¤t, const string::const_iterator &end, string &head, vector<string> &result)
 +{
 +    const auto &chars = c_map[(*current) - '2'];
 +
 +    if (current == end)
 +    {
 +        for (auto c : chars)
 +        {
 +            head.push_back(c);
 +            result.push_back(head);
 +            head.pop_back();
 +        }
 +        return;
 +    }
 +
 +    for (auto c : chars)
 +    {
 +        head.push_back(c);
 +        combine(current + 1, end, head, result);
 +        head.pop_back();
 +    }
 +}
 +
 +class Solution
 +{
 +public:
 +    vector<string> letterCombinations(string digits)
 +    {
 +        std::vector<string> result;
 +
 +        if (digits.empty())
 +            return result;
 +
 +        std::string head;
 +
 +        combine(digits.cbegin(), digits.cend() - 1, head, result);
 +
 +        return result;
 +    }
 +};
 | 
