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(* ̄▽ ̄*)ブ

 

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