目录

​1,题目描述​

​题目大意​

​2,思路​

​3,AC代码​

​4,解题过程​


1,题目描述

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

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

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