問題1.3

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

はい。簡単なんで、どんどん行きましょう。

問題

2つの文字列が与えられたとき、片方がもう片方の並び替えになっているかどうかを決定するメソッドを書いてください。

#encoding: utf-8


def is_same_characters(str1, str2):
    '''
    引数の2つの文字列が、同じ文字の異なる組み合わせかどうかをチェック
    >>> is_same_characters('hello', 'helo')
    False
    >>> is_same_characters('hello', 'hello')
    True
    >>> is_same_characters('h', 'h')
    True
    '''
    # 引数の文字列をリストに変換
    str_list1 = list(str1)
    str_list2 = list(str2)

    # リストに変換した文字列をソート
    str_list1.sort()
    str_list2.sort()

    # ソートした文字列リストの比較
    if str_list1 == str_list2:
        return True
    else:
        return False


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


if __name__ == '__main__':
    _test()

考察


大文字・小文字の区別をどうするかや、空白文字をどうするかは事前に確認しておけとのこと。たしかに。。。


あと、文字列長が違えばその時点でアウトなので、そこで計算時間省略しろと。