aboutsummaryrefslogtreecommitdiff
path: root/challenge-250/witawayar/cpp/ch-2.cpp
blob: 290e1efc605aada940ec200a392d8ef5473b1ea0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// g++ -Wall -Wextra -Wpedantic -std=c++17 cpp/ch-2.cpp
#include <iostream>
#include <sstream>
#include <vector>

int fun(std::vector<std::string> alpha_num_strs) {
    int max = -1;
    for (const std::string& str : alpha_num_strs) {
        int current =
            str.find_first_not_of("0123456789") == std::string::npos
              ? std::stoi(str)
              : str.size();
        if (current > max) {
            max = current;
        }
    }
    return max;
}

int main(void) {
    std::vector<std::pair<std::vector<std::string>, int>> tests = {
        {{"perl", "2", "000", "python", "r4ku"}, 6},
        {{"001", "1", "000", "0001"}, 1},
        {{"-12", "2"}, 3}
    };
    
    for (const auto& [input, expected_output] : tests) {
        int got = fun(input);
        if (got != expected_output) {
            std::stringstream error_msg;
            error_msg << "Expected " << expected_output << ", got " << got;
            throw std::runtime_error(error_msg.str());
        }
    }
    
    std::cout << "done-testing, success\n";
}