用C ++从英语重建原始数字

假设我们有一个非空字符串,其中包含乱序的英语表示形式(数字0-9),并以升序输出数字。有一些属性-

  • 输入保证有效,并且可以转换为原始数字。这意味着不允许使用无效输入,例如“ abc”或“ zerone”。

  • 输入长度小于50,000。

因此,如果输入类似于“ fviefuro”,则输出将为45。

为了解决这个问题,我们将遵循以下步骤-

  • nums:=一个数组,该数组保存英语字母从0到9的数字。

  • 计算一个数组的大小为10

  • ans:=一个空字符串。和n:=字符串的大小。

  • 如果我的范围是0到n – 1,

    • 如果s [i] ='z',则将count [0]加1

    • 如果s [i] ='w',则将count [2]加1

    • 如果s [i] ='g',则将count [8]加1

    • 如果s [i] ='x',则将count [6]加1

    • 如果s [i] ='v',则将count [5]加1

    • 如果s [i] ='o',则将count [1]加1

    • 如果s [i] ='s',则将count [7]加1

    • 如果s [i] ='f',则将count [4]增加1

    • 如果s [i] ='h',则将count [3]增加1

    • 如果s [i] ='i',则将count [9]加1

  • count [7]:= count [7] – count [6]

  • count [5]:= count [5] – count [7]

  • count [4]:= count [4] – count [5]

  • 计数[1]:=计数[1] –(计数[2] +计数[4] +计数[0])

  • count [3]:= count [3] – count [8]

  • count [9]:= count [9] –(count [5] + count [6] + count [8])

  • 为我在0到9的范围内

    • ans:= ans +(i +'0')的字符

    • 对于0范围内的j进行计数[i]

  • 返回ans

例子(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"