문자열 (String)

string thumbnail.png
문자열은 문자들의 집합, 배열로서 엄밀하게 자료 구조라고 볼 수 없지만 배열 (Array)과 유사하기 때문에 자료 구조의 하위 항목으로 묶었다.

문자열을 검색하기 위한 일반적인 자료 구조는 다음과 같이 있다.

그리고 문자열 관련 알고리즘은 다음과 같이 있다.

시간 복잡도

문자열은 배열과 유사하기 때문에 시간 복잡도 또한 같다.

동작 Big-O
접근 O(1)
검색 O(n)
삽입 O(n)
삭제 O(n)

다른 문자열과 관련된 작업

Operation Big-O Note
부분 문자열 찾기 O(n.m) This is the most naive case. There are more efficient algorithms for string searching such as the KMP algorithm
문자열 연결 O(n + m)
문자열 자르기 O(m)
문자열 분리 O(n + m)
양 끝 공백 제거 O(n)

기법

문자 세기

문자열에서 특정 문자의 개수를 셀 때는 보통 hash table이나 map을 사용한다. 만약 언어에서 문자를 검색하는 함수를 내장하고 있다면 그것을 사용하자

아나그램 (Anagram)

아나그램은 원래의 모든 글자중 하나씩만 사용하여 새로운 단어나 구를 만드는 놀이이다.
두 문자열이 아나그램인지 확인하는 방법은 다음과 같이 있다.

Palindrome

Palindrome은 앞으로 읽어도, 뒤로 읽어도 거꾸로해도 같은 문자열인 단어를 말한다.

문자열이 Palindrome인지 확인하는 방법은 다음과 같이 있다.

필수 문제

추천 연습 문제


참조
Do it 알고리즘 코딩 테스트 - Java 편
Array cheatsheet for coding interviews | Tech Interview Handbook