我们给了一个包含许多重复数字的数字。目的是找到多种拼写方式。例如,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