我有一个程序来查找字符串中的字母数量,但它不完整,你可以完成它python

时间:2015-08-08 13:02:50

标签: python

def encode(source):
    dest="";
    i=0
    while i<len(source):
        runLength = 1;
        while source[runLength] == source[runLength-1]:
            runLength=runLength+1
            i=i+1
        dest+=source[i]
        dest+=str(runLength)
        i=i+1
    return dest


source = raw_input("")
print (encode(source))

示例输入:

AABBCCCCDADD

示例输出:

3A2B4C3D

请修复它,大多数改变第6行应该这样做我认为

3 个答案:

答案 0 :(得分:0)

最好的方法是使用width: 100%来保持计数,OrderedDict也会为您保留订单:

dict

这只适用于你输入的字符串,其中字符不会在以后重复,如果它们我们可以在循环中跟踪并在我们遇到与之前不同的字符时重置计数:< / p>

from collections import OrderedDict
def encode(source):
    od = OrderedDict()
    # iterate over input string
    for ch in source:
        # create key/value pairing if key not alread in dict
        od.setdefault(ch,0)
        # increase count by one each time we see the char/key
        od[ch] += 1
    # join the key/char and the value/count for each char
    return "".join([str(v)+k for k,v in od.items()])  

source = "AABBCCCCDDD"
print (encode(source))

输出:

def encode(source):
    it = iter(source)
    # set prev to first char from source
    prev = next(it)
    count = 1
    out = ""
    for ch in it:
        # if prev and char are equal add 1 to count
        if prev == ch:
            count += 1
        # else we don't have sequence so add count and prev char to output string
        # and reset count to 1
        else:
            out += prev + str(count)
            count = 1
        prev = ch
    # catch out last match or a single string
    out += prev + str(count)
    return out

答案 1 :(得分:0)

您可以使用.html{ position:relative; } 完成此操作。

dictionary

答案 2 :(得分:0)

作为替代解决方案,有一个名为itertools的Python库,它具有在这种情况下很有用的功能。它可以将您的字符串拆分为相同字母的组。

import itertools

def encode(source):
    return "".join(["%u%s" % (len(list(g)), k) for k,g in itertools.groupby(source)])

print encode("AABBCCCCDDD")

这将打印出以下内容:

2A2B4C3D

要了解其工作原理,请参阅以下较小的版本:

for k, g in itertools.groupby("AABBCCCCDDD"):
    print k, list(g)

这将打印以下内容:

A ['A', 'A']
B ['B', 'B']
C ['C', 'C', 'C', 'C']
D ['D', 'D', 'D']

您可以看到k是关键,g是该组。如果我们采用每个组的长度,您就可以得到解决方案。