Gegeben eine Zahl in Form einer Zeichenfolge, müssen wir herausfinden, wo wir sie nach dem Löschen von null oder mehr Elementen durch acht teilbar machen können. Mit anderen Worten, wir müssen herausfinden, ob es eine Teilfolge der Zeichenfolge gibt ist durch 8 teilbar. Geben Sie die geänderte Zeichenfolge oder -1 zurück, wenn dies nicht möglich ist.
Gemäß der Teilbarkeitsregel ist jede Zahl, deren letzte drei Ziffern durch 8 teilbar sind, auch durch 8 teilbar. Beispielsweise sind 56992992 und 476360 durch 8 teilbar, 2587788 jedoch nicht. Wenn das Ergebnis eine ganze Zahl ist, ist die ursprüngliche Zahl durch 8 teilbar.
Schauen wir uns einige Eingabeszenarien an, die die Methode im Detail erklären −
Wenn die an die Methode übergebene Eingabe eine numerische Zeichenfolge ist, die eine beliebige durch 8 teilbare Teilzeichenfolge enthält, können wir in der Ergebnisliste die durch 8 teilbare Teilzeichenfolge erhalten
Input: 2567992 Result: 56
zurückgegeben
Input: 77777777777 Result: -1
#include <iostream> using namespace std; int checkIfSubstringExist(string req, string given) { int index = 0; for (char ch : given) { if (req[index] == ch) { index++; } } return index == (int)req.size(); } string solve(string s) { for (int i = 0; i < 1e3; i += 8) { string num = to_string(i); if (checkIfSubstringExist(num, s)) { return num; } } return "-1"; } int main() { // the string “95256” can be converted to a string divisible by 8 // the string “74516” cannot be converted to a string divisible by 8 // let’s run our code to find the output in each case string s1 = "95258", s2="74516"; cout << solve(s1) << "\n" << solve(s2) << endl; return 0; }
8 16
Fazit
Das obige ist der detaillierte Inhalt vonC++-Programm zum Entfernen von Zeichen aus einer numerischen Zeichenfolge, sodass diese durch 8 teilbar ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!