/ PROGRAMING, PYTHON

문자열비교

문자열비교

기본적으로 ChatGPT를 이용하여 틀을 잡고 만든 것

두 개의 문자열을 비교하는 문제
두 개의 문자열이 같은지 판별하고 같다면 True
다르다면 False를 출력

문자열비교 1 (문자열순열확인)

두 문자열이 서로 순열인지 확인하는 알고리즘
해석 : 각 문자가 중복 없이 모두 서로에게 존재 하는 것

def is_premutation(str1, str2):
    # 두 문자열의 길이가 같지 않으면 순열이 아니다.
    if len(str1) != len(str2):
        return False
    
    # 각 문자열에서 문자의 개수를 셀 수 있도록 딕셔너리를 생성해준다.
    freq1 = {}
    freq2 = {}
    
    # 각 문자에 대한 빈도를 세어준다.
    for i in range(len(str1)):
        # str1에 대한 빈도 추가
        freq1[str1[i]] = freq1.get(str1[i],0) + 1
        # str2에 대한 빈도 추가
        freq2[str2[i]] = freq2.get(str2[i],0) + 1
        
    # 두 딕셔너리가 같은지 확인
    return freq1 == freq2

print(is_permutation("abc", "cba"))
print(is_permutation("abcd", "abdc"))
print(is_permutation("aaa", "aab"))
print(is_permutation("hello", "world"))
True
True
False
False
  • 함수
    1. is_permutation 함수는 str1 및 str2의 두 문자열을 사용합니다.
    2. 입력으로 str1이 str2의 순열이면 True를 반환하고 그렇지 않으면 False를 반환합니다.
  • 알고리즘
    1. 두 문자열이 동일한지 확인합니다.
      길이가 같지 않으면 서로 순열이 될 수 없으므로 함수는 False를 반환합니다.
    2. freq1 및 < code>freq2, 두 문자열에 각 문자의 빈도를 저장합니다.
      사전의 get 메서드는 주어진 키에 대한 값을 가져오는 데 사용되며 키가 존재하지 않으면 기본값(이 경우 0)을 반환합니다.
    3. 문자열의 각 문자를 반복하여 두 문자열의 각 문자에 대한 빈도를 업데이트합니다.
      str1의 각 문자에 대한 빈도 수는 사전 freq1에 저장되고 str2의 각 문자에 대한 빈도 수는 사전에 저장됩니다. freq2.
    4. == 연산자를 사용하여 두 사전이 동일한지 확인합니다.
      두 사전의 키와 값이 같으면 두 문자열이 서로 순열이므로 함수는 True를 반환합니다.
      두 사전이 같지 않으면 두 문자열이 서로 순열이 아니므로 함수는 False를 반환합니다.
  • 추가방법
    • sorted 사용
       # 문자열을 정렬하여 비교
       sorted(str1) == sorted(str2)