-
题目大意:通过第n个数字推第n+1个数字:统计第n个数中每个数字连续出现的次数,然后再用次数描述这个数。(注意:原题描述中没有强调连续出现,通过给出的样例推测出的题目意思。)
-
思路:
- 用字符串存数字
- 用下标j记录与当前数字s[i]不同的数字的下标,则相同数字连续出现的次数为 j - i,用临时变量t += s[i] + j - i
-
知识点:
- 字符串
- to_string(int/float):把int/float变成字符串
- for循环内判断和赋值的灵活使用
- 字符串
-
代码:
#include <iostream> #include <string> using namespace std; int main() { string s; int n, j; cin >> s >> n; for(int m = 0; m < n - 1; m++){ string t; for(int i = 0; i < s.length(); i = j){ for(j = i; j < s.length() && s[j] == s[i]; j++); // 找到与当前数字s[i]不同的数字的下标 or 记录最后一个数字后一位下标 t += s[i] + to_string(j - i); } s = t; } cout << s; return 0; }
-
总结:
- 把int/float变成字符串:
to_string(int/float)
- for循环内判断和赋值的灵活使用:
- 可以用for循环找到不符合条件的元素的下标j;
- 找到j后,把j赋值给i,直接进行下一步运算。
- 把int/float变成字符串:
【PAT】1140 Look-and-say Sequence (20 分)
最新推荐文章于 2022-10-30 15:12:07 发布