박종훈 알고리즘 블로그

문자열 회전

문자열 회전: 한 단어가 다른 문자열에 포함되어 있는 판별하는 isSubstring이라는 메서드가 있다고 하자. s1과 s2의 두 문자열이 주어졌고, s2가 s1을 회전시킨 결과인지 판별하고자 한다(가령 'waterbottle'은 'erbottlewat'을 회전시켜 얻을 수 있는 문자열이다). isSubstring 메서드를 한 번만 호출해서 판별할 수 있는 코드를 작성하라.

그냥 문자열 length 만큼 한칸씩 돌려가면서 일치하는 경우가 있는지 확인하면 되는거 아닌가 생각이 들었다.

def is_substring(a, b):
    char_array = list(b)

    for i in range(len(char_array)):
        char = char_array.pop(0)
        char_array.append(char)
        if a == ''.join(char_array):
            return True
    return False

# 예시 입력
a = 'waterbottle'
b = 'erbottlewat'

print(is_substring(a, b))

range

class range(stop)
class range(start, stop, step=1)

Rather than being a function, range is actually an immutable sequence type, as documented in Ranges and Sequence Types — list, tuple, range.

starting from 0 by default, and increments by 1 (by default)

categories: 스터디-알고리즘

tags: 알고리즘 , algorithm , rotate , string , range , 회전 , 문자열