zoukankan      html  css  js  c++  java
  • PAT A1140 Look-and-say Sequence [字符串处理]

    题目描述

    链接
    题意有点迷,就是字符串是:[数字1][数字1的个数][数字2][数字2的个数]组成

    分析

    • 写的时候写了半天,关键是边界没处理好!!其实可以手动模拟下
    • to_string(val) 将数值转字符串
    • 其实不用cnt记录个数,直接循环找j的位置,作减法就好
    • 能不写while就不写,写for多好,然后就是另一种写法真的优雅

    代码

    #include<bits/stdc++.h>
    using namespace std;
    
    int main(){
        string s;
        int m;
        cin>>s>>m;
        m--;
        while(m--){
            int len = s.length();
            string t;
            int cnt = 0;
            for(int i=0;i<len;i++){
                t += s[i];
                cnt++;
                for(int j=i+1; j<len; j++){
                    if(s[i] != s[j]){
                        i = j-1;
                        break;
                    }
                    cnt++;
                    if(j+1 == len){
                        i = j;
                        break;
                    }
                }
                t += to_string(cnt);
                cnt = 0;
            }
            s = t;
        }
        cout<<s<<endl;
    }
    
    

    更好的写法

    #include <iostream>
    using namespace std;
    int main() {
        string s;
        int n, j;
        cin >> s >> n;
        for (int cnt = 1; cnt < n; cnt++) {
            string t;
            for (int i = 0; i < s.length(); i = j) {
                for (j = i; j < s.length() && s[j] == s[i]; j++);
                t += s[i] + to_string(j - i);
            }
            s = t;
        }
        cout << s;
        return 0;
    }
    
  • 相关阅读:
    iframe
    go web
    go 算法与数据结构
    go redis
    go 网络编程
    go 并发编程
    go 序列化
    go 文件操作
    go 面向对象
    go 环境及4开发
  • 原文地址:https://www.cnblogs.com/doragd/p/11448859.html
Copyright © 2011-2022 走看看