字符串问题---字符串的统计字符串

该博客主要探讨了如何统计字符串中各字符出现的次数,并形成统计字符串,如'a_3_b_2_1_d_3_f_2_c_1'。同时,介绍了如何根据统计字符串和索引找到原始字符串的对应字符。提供了使用Python解决这类问题的基本思路和代码实现。
摘要由CSDN通过智能技术生成

【题目】

  给定一个字符串str,返回str的统计字符串。例如,“aaabbadddffc”的统计字符串为“a_3_b_2_1_d_3_f_2_c_1”。

【补充题目】

  给定一个字符串的统计字符串cstr,再给定一个整数index,返回cstr所代表的原始字符串上第index个字符。例如,”a_1_b_100”所代表的原始字符串上第0个字符是‘a’,第50个字符是‘b’。

【基本思路】

  原问题。从左到右遍历str,如果发现当前字符不等于前一个字符,就将之前的字符和频数添加到新的字符串。详情参照如下代码。

  补充题目。

  1. 使用posi用来判断当前字符是字母字符还是数字字符,True表示字母字符,False表示数字字符。初始时令posi = True。从左到右遍历字符串,如果遇到‘_’,就反转posi。

  2. 每当遇到下一个字母,就将之前的字母以及频数加到新字符串。

  3. 注意处理字符串的结尾。

  4. 详情见如下代码

下面是使用python3.5实现的代码


#字符串的统计字符串
#原问题
def getCountString(str1):
    if str1 == None or str1 == '':
        return ''
    res = str1[0]
    num = 1
    for i in range(1, len(str1)):
        if str1[i] == str1[i-1]:
            num += 1
        else:
            res = res + '_' + str(num) + '_' + str1[i]
            num = 1
    return res + '_' + str(num)

#补充题目
def getCharAt(str1, index):
    if str1 == None or str1 == '' or index < 0:
        return ''
    posi = True
    cur = ''
    num = 0
    sum = 0
    for i in range(len(str1)):
        if str1[i] == '_':
            posi = not posi
        elif posi:
            sum += num
            if sum > index:
                return cur
            cur = str1[i]
            num = 0
        else:
            num = num * 10 +int(str1[i])
    return cur if sum+num > index else ''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值