C++ :: Aufgabe #357

1 Lösung Lösung öffentlich

Zweitgrößte Ziffer eines alphanumerischen Textes

Anfänger - C++ von JKooP - 18.04.2021 um 11:04 Uhr
Gegeben ist ein alphanumerischer Text (String) der nur Kleinbuchstaben und die positiven Ziffern 0-9 enthält.
Ziel soll es sein, die zweitgrößte Ziffer (nicht Index) des Textes zu ermitteln.
Ist kein zweitgrößter Wert enthalten, soll als Ergebnis -1 ausgegeben werden.

Beispiele:
t = "abc12321efg"
Lösung: 2 => [1, 2, 3]

t = "abc111def"
Lösung: -1 => [1] Kein zweiter Wert vorhanden!

Erstelle eine Methode/Funktion, die obige Aufgabenstellung umsetzt.

Viel Spaß

Lösungen:

vote_ok
von JKooP (18070 Punkte) - 17.05.2021 um 18:49 Uhr
C++ 17
Quellcode ausblenden C-Code
#include <iostream>
#include <string>
using namespace std;

int second_highest(string s) {

    int a[10]{ 0 };
    auto n{ 0 };

    for (const auto& c : s) 
        if (c >= '0' && c <= '9') 
            a[c - '0']++;

    for (auto i{ 0 }; i < 10; i++) {
        if (a[i] != 0) n++;
        if (n == 2) return i;
    }

    return -1;
}

int main()
{
    string s{ "abc12321efg" };
    cout << second_highest(s) << "\n";
}