最全【PAT甲级 - C++题解】1140 Look-and-say Sequence_c+,2024年字节跳动74道高级程序员面试

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取


#### Sample Output:



1123123111



题意

给定一个 Dn ,按照 D 需要输出第 n 项外观序列,而外观序列的规则如下:

i 项序列要根据其前一项的序列生成,例如 D 等于 1 ,则第 2 项为 11 ,意思是前一项中 1 出现了 1 次;第 3 项为 12 ,即其前一项中 1 出现了 2 次;第 3 项为 1121 ,即其前一项中 1 出现了 1 次,2 出现了 1 次;第 4 项为 122111 ,即其前一项 1 先连续出现了 2 次,接着2 出现了 1 次,然后 1 又出现了 1 次。

所以可以发现,每项序列是根据其上一个序列的值中每个元素连续的个数来生成的。

思路

具体思路如下:

  1. 输入起始序列 num 以及需要输出的项数 n
  2. 模拟题目意思,用双指针来生成每项序列,p 指向当前元素,而 q 指向与 p 指向元素相同的连续的最后一个元素的下一个位置,这样 q-p 就是 p 指向元素连续的个数。
  3. 输出第计算出来的第 n 项序列。
代码
#include<bits/stdc++.h>
using namespace std;

int main()
{
    string num;
    int n;
    cin >> num >> n;

    //进行n-1次转换
    for (int i = 1; i < n; i++)
    {
        int len = num.size();
        int p = 0;
        string str = "";
        while (p < len)
        {
            int q = p + 1;
            //找出连续相同的字段
            while (q < len && num[q] == num[p])    q++;
            str += num[p] + to\_string(q - p);
            p = q;
        }
        num = str;
    }

    //输出第n项序列
    cout << num << endl;

    return 0;
}

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

如果你需要这些资料,可以戳这里获取

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值