PAT_甲级_1140 Look-and-say Sequence (20point(s)) (C++)【字符串处理】

目录

1,题目描述

题目大意

2,思路

3,AC代码

4,解题过程


1,题目描述

Sample Input:

1 8

 

Sample Output:

1123123111

题目大意

( 看了N遍,终于。。。)直接介绍例子吧

  1. D
  2. D1(对1的描述:只有一个D)
  3. D111(对2的描述:一个D,一个1)
  4. D113(对3的描述:一个D,三个1)
  5. D11231(对4的描述:一个D,两个1,一个3)

 

2,思路

简单来说就是不断对上一个字符串的数字进行统计,将连续的几个数字合并。

index指向当前的元素s[index],num记录与当前元素相同的元素数目,然后将s[index]与num的字符串形式拼接,进行下一轮迭代。

 

 

3,AC代码

#include<bits/stdc++.h>
using namespace std;

int main(){
#ifdef ONLINE_JUDGE
#else
    freopen("1.txt", "r", stdin);
#endif // ONLINE_JUDGE
    int D, N;
    string s;
    cin>>D>>N;
    s = to_string(D);
    for(int i = 1; i < N; i++){
        int index = 0, num;        //index遍历字符串s num记录连续相同元素数目
        string temp;               //记录新的字符串
        while(index < s.size()){
            num = 1;
            temp += s[index];      //拼接元素
            while(index < s.size() - 1 && s[index] == s[index+1]){
                index++;
                num++;
            }
            index++;               // !!!
            temp += to_string(num);//拼接数目
        }
        s = temp;                  //替代原先的字符串 完成一次迭代操作
    }
    cout<<s;
    return 0;
}

4,解题过程

一发入魂o(* ̄▽ ̄*)ブ

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章