문자열 조작(String Manipulation)이란 문자열을 변경하거나 분리하는 등의 여러 과정을 말한다.

문자열 조작은 코딩 테스트에서 매우 빈번하게 출제되며, 실무에서도 다양한 분야에 쓰이는 주제

ex. 웹 페이지 탐색 등의 정보 처리 분야,

문자 메시지/이메일 등의 통신 시스템 분야,

컴파일러나 인터프리터 등을 다루는 프로그래밍 시스템 분야

1. 유효한 팰린드롬

leetcode 125. Valid Palindrome

<aside> 💡 '팰린드롬'이란 앞뒤가 똑같은 단어나 문장, 우리말로는 '회문'이라고 부른다. ex) 소주 만 병만 주소

</aside>

주어진 문자열이 팰린드롬인지 확인하라. 대소문자를 구분하지 않으며, 영문자와 숫자만을 대상으로 한다.

def is_palindrome(self, s: str) -> bool:  
    s = s.lower()
    s = re.sub('[^a-z0-9]', '', s)
    return s == s[::-1]  

<aside> 💡 정규식

</aside>

# 메타 문자(meta characters)
. ^ $ * + ? { } [ ] \\ | ( )

<aside> 💡 문자열 슬라이싱 매우 편리하고 무엇보다 내부적으로 매우 빠르게 동작한다. 위치를 지정하면 해당 위치의 배열 포인터를 얻게 되며, 이를 통해 연결된 객체를 찾아 실제 값을 찾아낸다. 이 과정은 매우 속도가 빠르므로 문자열 조작 시에는 항상 슬라이싱을 우선적으로 사용하는 편이 속도 개선에 유리하다.

</aside>

>>> S = '안녕하세요'
>>> print(S[1:4)
녕하세
>>> print(S[1:-2])
녕하
>>> print(S[:-3])
안녕
>>> print(S[-3:]
하세요

# 인덱스를 둘 다 생략하면 사본을 리턴한다.
# 파이썬은 a = b 와 같은 형태로 할당하면 
# 변수의 값이 할당되는 것이 아니라 a 변수가 b 변수를 참조하는 형태가 된다.
# 참조가 아닌 값 복사를 위해 [:]를 사용할 수 있으며,
# 이 방식은 문자열이나 리스트를 복사하는 Pythonic Way이기도 하다.
>>> print(S[:])
안녕하세요

# 뒤집기
>>> print(S[::1])
요세하녕안

2. 문자열 뒤집기

leetcode 344. Reverse String

문자열을 뒤집는 함수를 작성하라. 입력값은 문자 배열이며, 리턴 없이 리스트 내부를 직접 조작하라.