aboutsummaryrefslogtreecommitdiff
path: root/challenge-250/deadmarshal/cpp/ch-2.cpp
blob: 0b87ec93b6c708042531c2475aede05d06e4b549 (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
#include<iostream>
#include<vector>

bool is_numeric(const std::string &str)
{
  for(const auto& c : str) if(!isdigit(c)) return false;
  return true;
}

template<typename T>
size_t alphanumeric_string_value(const std::vector<T> &vec)
{
  size_t max{};
  for(auto & e : vec)
  {
    size_t n = is_numeric(e) ? std::stoi(e) : e.size();
    if(n > max) max = n;
  }
  return max;
}

int main()
{
  std::vector<std::string> vec1{"perl","2","000","python","r4ku"},
    vec2{"001","1","000","0001"};
  std::cout << alphanumeric_string_value<std::string>(vec1) << '\n'
	    << alphanumeric_string_value<std::string>(vec2) << '\n';
  return 0;
}