LeetCode Online Judge 题目C# 练习 - Count and Say
The count-and-say sequence is the sequence of integers beginning as follows: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.
Note: The sequence of integers will be represented as a string.
1 public static string CountandSay(int n) 2 { 3 string[] str = new string[2]; //两个 string 交替 4 str[0] = "1"; //初始值 5 int new_index = 0; 6 int curr_index = 0; 7 8 for (int i = 2; i <= n; i++) 9 { 10 new_index = (curr_index + 1) % 2; //交替index 11 str[new_index] = ""; 12 char ch = str[curr_index][0]; 13 int num = 1; //counter 14 for (int j = 1; j < str[curr_index].Length; j++)//循环str[curr_index]中每一个character 15 { 16 if (str[curr_index][j] == ch) //相同character, num++ 17 num++; 18 else 19 { 20 str[new_index] += num.ToString() + ch.ToString(); 21 ch = str[curr_index][j]; 22 num = 1; 23 } 24 } 25 26 str[new_index] += num.ToString() + ch.ToString(); 28 29 curr_index = new_index; 30 } 31 32 return str[new_index]; 33 }
代码分析:
有点太简单的说。注意循环之后的一个写入不要漏掉。