首页 > 代码库 > count and say
count and say
1 ``` 2 class Solution{ 3 string result; 4 public: 5 //根据数组前一个数,count and say 构造出后一个数 6 void generate(string s,string &result) 7 { 8 result=string(); 9 string::iterator i=s.begin();10 while(i != s.end())11 {12 char cur=*i;13 int count=1;14 i++;15 while(i != s.end() && *i == cur)16 {17 count++;18 i++;19 }20 result.push_back(count+‘0‘);21 result.push_back(cur);22 23 }24 25 }26 //n相当于数组的下标,n是几就调用上面的函数几次,这样就反复调用,每次都以前一个为参数,得到答案27 string countAndSay(int n){28 29 for(int i=1;i<n;i++)30 {31 32 generate(result,result);33 }34 return result;35 }36 };37 38 ```
首先,我们发现一点,那个数组中前一个数字按照count and say的方式译码的结果就是后一个数,那么我先写了一个函数,功能是给定前一个数,计算出后一个数。
那么要实现的是求出第n个数,直接循环n-1次,每次的输入是上一次的输出即可。
count and say
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。