티스토리 뷰
반응형
* Python을 기준으로 합니다
문자열 (String)
- 개념
- 문자열 : 문자들의 집합으로, emutable 객체
- 배열처럼 사용할 수 있지만, 한번 선언된 문자열은 상수 취급을 하기 때문에 값을 임의로 변경할 수 없음
- 대표적으로 `+` 연산은 문자열을 결합하는데, 이는 내부적으로 상수끼리의 합으로 취급됨
- 결과적으로 새로운 상수를 생성하여 할당하는 방식으로 수행되므로 비효율적임
- 주요 유형 : Palindrome/Anagram, 진법 변환, 문자열 조작(변환, 탐색, 정렬), 정규표현식
- 구현
1. 문자열 초기화
- `' '`나 `" "` 사용
hello1 = 'Hello World!'
hello2 = "Hello World!"
2. 문자열 결합
- `+` 나 `''.join()` 사용
- 여기서 `+`는 각각의 문자열을 메모리에 복사하여 새로운 문자열을 만들기 때문에 $O(n^{2})$의 time complexity를 가짐
hi = 'Hello'
wrd = 'World!'
print(hi+wrd) #HelloWorld!
print(''.join([hi, wrd])) #HelloWorld!
print(' '.join([hi, wrd])) #Hello World!
3. 문자열 수정
- `replace(대상 문자열, 대체 문자열)` 사용
hi1 = 'Hi'
hi2 = hi1.replace('i','ello')
print(hi2) #Hello
4. 문자열 탐색
- `find()` : 처음으로 발견되는 문자의 위치를 반환, 없으면 -1
hi = 'Hello World!'
print(hi.find('l')) #2
print(hi.find('z')) #-1
print(hi.find('rld')) #8
- `rfind()` : 문자열 뒤에서부터 처음으로 발견되는 문자의 위치를 반환, 없으면 -1
hi = 'Hello World!'
print(hi.rfind('l')) #9
print(hi.rfind('z')) #-1
print(hi.rfind('rld')) #8
5. 문자열 역순
- `[::-1]`과 같이 slicing을 이용하여 문자열을 뒤집음
hi = 'Hello World!'
print(hi[::-1]) #!dlroW olleH
6. 문자열/진법 변환
- `ord()` : 문자를 input으로 하여 ASCII 코드 값을 반환
- `chr()` : 정수를 input으로 하여 해당 문자를 반환
ord('H') #72
chr(72) #H
- `bin(), oct(), hex()` : 입력된 정수를 각각 2진법, 8진법, 16진법으로 변환
bin(5) #0b101
oct(5) #0o5
hex(5) #0x5
7. 정규표현식
- 정규표현식 (Regular Expression; regex) : 찾고자 하는 문자열이 매우 가변적일 때 사용
- `re` 내장 library를 import 하여 사용함
- `search(regex, 문자열)` : regex를 통해 문자열 전체에서 일치하는 결과 반환, 없으면 none
- `match(regex, 문자열)` : regex를 통해 문자열 처음부터 일치하는 결과 반환, 없으면 none
- `findall(regex, 문자열)` : regex를 통해 일치하는 모든 결과 반환, 없으면 `[]`
import re
hi = 'Hello World!'
print(re.match('[a-z]+', hi)) # None
print(re.search('[a-z]+', hi)) #ello
print(re.findall('l', hi)) #['l', 'l', 'l']
반응형
'Algorithm > Basic' 카테고리의 다른 글
[Algorithm] 해시 테이블 (0) | 2024.03.24 |
---|---|
[Algorithm] 큐, 덱 (0) | 2024.03.22 |
[Algorithm] 스택 (0) | 2024.03.21 |
[Algorithm] 연결 리스트 (0) | 2024.03.20 |
[Algorithm] 배열 (0) | 2024.03.19 |
댓글