def check_permutation(string1, string2):
    """
    Algorithm to determine if two strings are permutations of the other
    :param string1: String
    :param string2: String
    :return: Boolean
    """

    def make_dictionary(string):
        """
        Helper function to make a dictionary mapping characters to observations
        :param string: input string
        :return: dictionary mapping characters to observations
        """
        dict_ = {}
        for char in string:
            if char in dict_.keys():
                dict_[char] += 1
            else:
                dict_[char] = 1
        return dict_

    # Special Cases, can't be permutations if different lengths or empty
    if len(string1) != len(string2):
        return False

    if string1 is None or string2 is None:
        return False

    string1_dict = make_dictionary(string1)
    string2_dict = make_dictionary(string2)

    for key, value in string1_dict.items():
        if key not in string2_dict.keys():
            return False
        if string2_dict[key] != value:
            return False

    return True