zoukankan      html  css  js  c++  java
  • (python3) 字符串压缩与解压

    题目赘述:

    本题需要你根据压缩或解压的要求,对给定字符串进行处理。这里我们简单地假设原始字符串是完全由英文字母和空格组成的非空字符串。

    输入格式:

    输入第一行给出一个字符,如果是 C 就表示下面的字符串需要被压缩;如果是 D 就表示下面的字符串需要被解压。第二行给出需要被压缩或解压的不超过1000个字符的字符串,以回车结尾。题目保证字符重复个数在整型范围内,且输出文件不超过1MB。

    输出格式:

    根据要求压缩或解压字符串,并在一行中输出结果。

    输入样例 1:
    C
    TTTTThhiiiis isssss a tesssst CAaaa as
    输出样例 1:
    5T2h4is i5s a3 te4st CA3a as
    输入样例 2:
    D
    5T2h4is i5s a3 te4st CA3a as10Z
    输出样例 2:
    TTTTThhiiiis isssss a tesssst CAaaa asZZZZZZZZZZ
    题目解析:

    题目不难,对字符串的处理问题。首先一定是分两种情况。。

    看如下解答,感觉可读性还不错。

    压缩的思路是寻找连续相同的字符,输出“计数”“字符”,计数为1时省略数字,重点是如何使遍历过程不重复、不遗漏,对于i 的操作尤为关键;

    解压的思路是找数字及其后的字符,没有数字直接copy,难点仍是遍历过程,且数字可能是一位数到三位数。

    pro = input()
    string = input()
    n = len(string)
    ans=""                  # 输出结果
    if pro == "C":          # 压缩
        i = 0
        while i < n:        # 从i 开始寻找连续相同的字符,计数为con
            j = i+1
            con = 1
            while j < n and string[j]== string[i]:
                con += 1
                j += 1
            if con == 1:      # 计数为1 则直接加到ans
                ans = ans + string[i]
            else:
                new = "%d%s" % (con, string[i])
                ans = ans + new
            i = j             # i 定位到下一个字符
     
    else:                    # 解压
        i=0
        while i < n:
            j = i + 1
            if string[i].isdigit():            # 从i 开始寻找连续的数字字符,为数量num
                while string[j].isdigit():
                    j+=1
                num = int(string[i:j])
                new = string[j] * num
                ans = ans + new
                i = j + 1
            else:                               # 若i 不为数字,直接添加到ans
                ans = ans + string[i]
                i = j
    print(ans)
  • 相关阅读:
    《设计原本》读书笔记01
    SQL SERVER存储过程的几种示例
    SQLSERVER2008 存储过程基本语法
    (转)C#程序开发中经常遇到的10条实用的代码
    (转)C#正则表达式Regex类的用法
    常用正则表达式
    (转)通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号
    checkbox:全选与反全选
    checkbox:获取所有已选中的值
    Quartz(任务调度)- Cron
  • 原文地址:https://www.cnblogs.com/songhuasheng/p/10407681.html
Copyright © 2011-2022 走看看