मान लीजिए कि हमारे पास एक गैर-रिक्त स्ट्रिंग है जिसमें अंकों का 0-9 अंकों का एक आउट-ऑफ-ऑर्डर अंग्रेजी प्रतिनिधित्व है, अंकों को आरोही क्रम में आउटपुट करता है। कुछ गुण हैं -
- इनपुट के वैध होने की गारंटी है और इसे इसके मूल अंकों में बदला जा सकता है। इसका मतलब है कि "एबीसी" या "शून्य" जैसे अमान्य इनपुट की अनुमति नहीं है।
- इनपुट लंबाई 50,000 से कम है।
तो अगर इनपुट "fviefuro" जैसा है, तो आउटपुट 45 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- nums :=एक एरे जिसमें 0 से 9 तक अंग्रेजी अक्षरों में संख्याएं होती हैं।
- 10 आकार की एक सरणी गणना करें
- उत्तर:=एक खाली स्ट्रिंग। और n:=स्ट्रिंग का आकार।
- मैं के लिए 0 से n -1 की सीमा में, करो
- अगर s[i] ='z', तो गिनती [0] को 1 से बढ़ाएं
- अगर s[i] ='w', तो गिनती [2] को 1 से बढ़ाएं
- अगर s[i] ='g', तो गिनती [8] को 1 से बढ़ाएं
- अगर s[i] ='x', तो गिनती [6] को 1 से बढ़ाएं
- अगर s[i] ='v', तो गिनती [5] को 1 से बढ़ाएं
- अगर s[i] ='o', तो गिनती [1] 1 से बढ़ाएं
- अगर s[i] ='s', तो गिनती [7] को 1 से बढ़ा दें
- अगर s[i] ='f', तो गिनती [4] को 1 से बढ़ाएं
- अगर s[i] ='h', तो गिनती [3] को 1 से बढ़ाएं
- अगर s[i] ='i', तो गिनती [9] को 1 से बढ़ाएं
- गिनती[7] :=गिनती[7] - गिनती[6]
- गिनती[5] :=गिनती[5] - गिनती[7]
- गिनती[4] :=गिनती[4] - गिनती[5]
- गिनती[1]:=गिनती[1] - (गिनती[2] + गिनती[4] + गिनती[0])
- गिनती[3] :=गिनती[3] - गिनती[8]
- गिनती[9] :=गिनती[9] - (गिनती[5] + गिनती[6] + गिनती[8])
- 0 से 9 की श्रेणी में i के लिए, करें
- जे के लिए 0 रेंज में गिनने के लिए[i]
- उत्तर:=उत्तर + (i + '0') का वर्ण
- जे के लिए 0 रेंज में गिनने के लिए[i]
- वापसी उत्तर
उदाहरण(C++)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
string originalDigits(string s) {
string nums[]= {"zero", "one", "two", "three", "four", "five", "six", "seven","eight", "nine"};
vector <int> cnt(10);
string ans = "";
int n = s.size();
for(int i = 0; i < n; i++){
if(s[i] == 'z')cnt[0]++;
if(s[i] == 'w') cnt[2]++;
if(s[i] == 'g')cnt[8]++;
if(s[i] == 'x')cnt[6]++;
if(s[i] == 'v')cnt[5]++;
if(s[i] == 'o')cnt[1]++;
if(s[i] == 's')cnt[7]++;
if(s[i] == 'f')cnt[4]++;
if(s[i] == 'h')cnt[3]++;
if(s[i] == 'i') cnt[9]++;
}
cnt[7] -= cnt[6];
cnt[5] -= cnt[7];
cnt[4] -= cnt[5];
cnt[1] -= (cnt[2] + cnt[4] + cnt[0]);
cnt[3] -= cnt[8];
cnt[9] -= (cnt[5] + cnt[6] + cnt[8]);
for(int i = 0; i < 10; i++){
for(int j = 0; j < cnt[i]; j++){
ans += (char)(i + '0');
}
}
return ans;
}
};
main(){
Solution ob;
cout << ob.originalDigits("fviefuro");
} इनपुट
"fviefuro"
आउटपुट
"45"