用队列:
public class Solution {
public string CountAndSay(int n) {
if (n==1)
{
return "1";
}
Queue<string> q = new Queue<string>();
q.Enqueue("1");
int nth = 2;
while (nth<=n)
{
StringBuilder sb = new StringBuilder();
var cur = q.Dequeue();
int count = 0;
char num = '0';
int i = 0;
while (i<cur.Length)
{
if (count==0)
{
num = cur[i];
count = 1;
}
else if (cur[i]==num)
{
count++;
}
else if (cur[i]!=num)
{
sb.Append(count.ToString());
sb.Append(num);
num = cur[i];
count = 1;
}
i++;
}
sb.Append(count.ToString());
sb.Append(num);
string countNSay = sb.ToString();
q.Enqueue(countNSay);
nth++;
}
return q.Dequeue();
}
}
这道题后期需要研讨。