Checkio长期重复挑战

时间:2017-08-15 16:25:21

标签: python python-2.7

在挑战中,您需要找到由相同字母组成的最长子字符串的长度。例如,行“aaabbcaaaa”包含四个具有相同字母“aaa”,“bb”,“c”和“aaaa”的子串。最后一个子串是最长的子串,使其成为答案。输入:字符串。输出:Int。例如:

  

long_repeat('sdsffffse')== 4

     

long_repeat('ddvvrwwwrggg')== 3

这是我的代码:

def long_repeat(text):
    text = list(text)
    counter = []
    c = []

    for i in range(len(text)):
        if text[0] == text[1]:
            c.append(text.pop(0))
        else:
            counter.append(c)
            c = []
    print text # should be empty 
    print counter # should contain a lists of the repeated letters

输出:

>>>long_repeat('aaabbccc')
['a', 'b', 'b', 'c', 'c', 'c', 'c']
[['a', 'a'], [], [], [], [], [], []]

为什么循环在完成第一个字母时会停止,在这种情况下是'a'?

2 个答案:

答案 0 :(得分:0)

class KStateMachine(private val states: List<StateHandler>) { private var currentState: KClass<out StateHandler> private val handlers: HashMap<KClass<out StateHandler>, Int> = HashMap() init { currentState = states[0]::class for (i in 0..states.size - 1) { handlers.put(states[i]::class, i) } } fun to(toState: KClass<out StateHandler>) { var index = handlers.get(toState) if (index != null) { var oldState = currentState currentState = toState states.get(index).from(oldState) } else { throw RuntimeException("to state unknown") } } abstract class StateHandler { abstract fun from(fromState: KClass<out StateHandler>) } } 例如输入为“ab”时,您没有将a附加到c变量

另外,Python字符串没有“pop”方法因此它退出的原因(密切关注返回的错误)。

使用类似这样的东西来播放

test[0] != text[1]

答案 1 :(得分:0)

循环不会停止。您的model.add(Dense(N, activation='softmax')) 语句不会向前移动列表(此处没有else)。顺便说一句,你的逻辑并不完全正确。而且,弹出角色然后每回合收集它并不是一个好主意。您可以使用整数记录所需的所有必要信息,包括位置,当前计数,最大计数等。