ikemonn's blog

技術ネタをちょこちょこと

SRM 638 Div2 250 NamingConvention

問題文

https://community.topcoder.com/stat?c=problem_statement&pm=13521

書いた

class NamingConvention:
    def toCamelCase(self, variableName):
        while variableName.count('_') > 0:
            replace_char_index = variableName.index('_')
            variableName = variableName[:replace_char_index] + variableName[replace_char_index+1].upper() + variableName[replace_char_index+2:]
        return variableName

他の参加者のコードみたあと

result = ""
        variableName = list(variableName)
        for i, c in enumerate(variableName):
            if c == '_':
                variableName[i+1] = variableName[i+1].upper()
            else:
                result += c
        return result

感想

_ のindexを取得して、_を削除し、その後の文字を大文字にするということを考えたが、愚直に文字列をforで回したほうがシンプルだった。 pythonのstrは、Immutableなので直接書き換えることができない。 一旦Mutableなlistにしてから書き換える。