問題1.4

世界で闘うプログラミング力を鍛える150問

はいはい。サクサクっとね。

問題

文字列内に出現するすべての空白文字を"%20"で置き換えるメソッドを書いてください。ただし、文字列の後ろには新たに文字を追加するためのスペースが十分にある(バッファのサイズは気にしなくてもよい)ことと、その追加用スペースをのぞいた文字列の真の長さが与えられます(注意:Javaで実装する場合は、追加の領域を使用せずに処理できるよう文字配列を使ってください)。

#encoding: utf-8


def convert_space_in_string(str):
    '''
    先頭と末尾以外の連続する空白を%20に変換する関数
    >>> convert_space_in_string('Mr John Smith   ')
    'Mr%20John%20Smith'
    '''
    # 変換後の文字列
    converted_string = ''

    # 引数で渡された文字列を空白で分割した文字列のリストに入れる
    splited_strs_list = str.split()

    # 分割した文字列リストを'%20'を挟んだ文字列に置き換える。
    for splited_str in splited_strs_list:
        converted_string = converted_string + splited_str + r'%20'

    # 文字列の後ろに'%20'がついたままなので、その部分をカット
    return converted_string[0:len(converted_string) - 3]


def _test():
    import doctest
    doctest.testmod()


if __name__ == '__main__':
    _test()


さて、寝ます。