计算在C ++中用重复数字拼写数字的方法

我们给了一个包含许多重复数字的数字。目的是找到多种拼写方式。例如,112233可以拼写为双1,双2双三或一一二二三三。

我们将通过检查连续数字来做到这一点。如果数字为“ 13”,则只有一种方法将其拼写为“一三”(20)。如果数字为“ 113”,则为“双一三”,“一一三”(21)。因此,方法是对字符串中的一个连续数字进行计数,然后将2(count-1)与上一个结果相乘。

让我们通过示例来理解。

输入值 

num=”11211”

输出结果 

Count of ways to spell a number with repeated digits are: 4

说明 

ways are:
1. One one two one one
2. Double one two one one
3. One one two double one
4. Double one two double one

输入值 

num=”2212”

输出结果 

Count of ways to spell a number with repeated digits are: 2

说明 

ways are:
1. Two two one two
2. Double two one two

以下程序中使用的方法如下

  • 我们使用字符串str表示数字。

  • 函数word_spell(string str)接受str中的数字并返回拼写该数字的方式。

  • 通过这种方式将初始变量计数设为0

  • 对每个数字使用for循环遍历str。

  • 将可变温度作为特定数字的重复次数。如果str [i] == str [i + 1],请提高温度。

  • 计算count = count * pow(2,temp-1)

  • 最后返回结果。

示例

#include<bits/stdc++.h>
using namespace std;
long long int word_spell(string str){
   long long int count = 1;
   int len = str.length();
   for (int i=0; i<len; i++){
      int temp = 1;
      while(i < len-1 && str[i+1] == str[i]){
         temp++;
         i++;
      }
      count = count * pow(2, temp-1);
   }
   return count;
}
int main(){
   string str = "222211";
   cout<<"Count of ways to spell a number with repeated digits are: "<<word_spell(str);
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Count of ways to spell a number with repeated digits are: 16