首页 > 代码库 > LeetCode Count and Say 数数字
LeetCode Count and Say 数数字
1 class Solution { 2 public: 3 string countAndSay(int n) { 4 if(n==1) return "1"; 5 string str0="",str1="1"; 6 int i,t,count; 7 char c=‘*‘; 8 for(i=0;i<n-1;i++){ //一共要数n-1次,假如n=2,那么只要数str1这一次就行了 9 count=1;10 if(i%2!=0){ //i为奇数,数str011 c=str0[0];12 str1="";13 while(c!=‘\0‘){ //将str0 转到str114 t=1;15 if(str0[count]!=‘\0‘){16 while(str0[count]==c){ //判断前一个字符串里有多少个同样的,记录为count+1次17 count++; //记录读出串的位置18 t++; //记录相同字的个数19 }20 str1=str1+char(t+‘0‘); //记录到str1中21 str1=str1+c;22 c=str0[count++];23 }24 else{25 str1=str1+char(t+‘0‘); //记录到str1中26 str1=str1+c;27 c=‘\0‘;28 }29 }30 }31 else{ //i为偶数,数str132 c=str1[0];33 str0="";34 while(c!=‘\0‘){ //将str0 转到str135 t=1;36 if(str1[count]!=‘\0‘){37 while(str1[count]==c){ //判断前一个字符串里有多少个同样的,记录为count+1次38 count++; //记录读出串的位置39 t++; //记录相同字的个数40 }41 str0=str0+char(t+‘0‘); //记录到str1中42 str0=str0+c;43 c=str1[count++];44 }45 else{46 str0=str0+char(t+‘0‘); //记录到str1中47 str0=str0+c;48 c=‘\0‘;49 }50 }51 }52 }53 if(n%2==0)54 return str0;55 else56 return str1;57 }58 };
题意:
1, 11, 21, 1211, 111221, ...
1
is read off as "one 1"
or 11
.11
is read off as "two 1s"
or 21
.21
is read off as "one 2
, then one 1"
or 1211
.
Given an integer n, generate the nth sequence.
当n=1时,返回1;
当n=2时,返回11; //数n-1时所返回的数,就是1个1的意思
当n=3时,返回21; //也就是数n=2时所要返回的数,就是两个1;
当n=4时,返回1211; //可以看到n=3时返回的是21,有一个2和一个1,即1211
。。。。。
类推下去,格式是这样子的 [多少个][什么样的字符][多少个][什么样的字符]。。。。
思路:
用两个字符串,从n=1开始数,完了存到一个字符串,这个字符串的内容就是n=2所需要返回的。再数这个字符串里的东西,存到另一个字符串。
控制好数的次数就行了,问题不大。
LeetCode Count and Say 数数字
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。