[Algorithm] #03 문자열

g.pm·2022년 9월 29일
1

알고리즘

목록 보기
3/6
post-thumbnail

📄 문자열(string)

  • 메모리는 숫자만을 저장할 수 있기 때문에 A라는 글자의 모양 그대로 비트맵으로 저장하는 방법을 사용하지 않는 한 각 문자에 대해서 대응되는 숫자를 정해 놓고 이것을 메모리에 저장하는 방법이 사용함(아스키코드)
  • 가변길이 : 길이조절(java String) vs 구분자(C String) 두가지로 나뉘어짐
    => c언어에서 문자배열에 string을 저장할때는 끝에 반드시 NULL 문자를 넣어줘야 함.
    => 함수로도 제공 : strlen(), strcpy(), strcmp()

    java와 string 처리의 기본적인 차이점
    c는 아스키코드(1바이트), java는 유니코드

string을 복사하는 알고리즘

  1. 소스로부터 한 글자씩 읽어서 복사
  2. String의 끝('\0')까지 반복 후 타깃에 String 끝을 표시함.

string을 역순으로 바꾸는 뒤집기

  1. 자기 string 이용할 경우(Swap)이용한 임시 변수 필요함

string 의 비교

c에서는 strcmp

string로 된 숫자를 정수로 표현하는 방법

atoi /cstdlib

🔣 아스키 코드

  • 문자 인코딩 표준
  • 7bit 인코딩으로 128문자를 표현하며 33개의 출력 불가능한 제어 문자들과 공백을 비롯한 95개의 출력 가능한
    문자들로 이루어져 있음.
    ex) 32 ~ 126, A : 65 , a : 97
  • 확장 아스키 코드

    • 128 ~ 255 : 특수문자
  • 유니코드 :대부분의 컴퓨터는 문자를 읽고 쓰는데 아스키 형식을 사용

  • 자국의 문자를 표현하기 위해 코드체계를 만들어서 사용
    => 자국의 코드체계를 타국가 가지고 있지 않으면 해석 해석의 어려움
    => 이에 따라서 만들어진게 유니코드

패턴매칭(같은 문자열을 매칭하는 것)

종류 : 고지식한 알고리즘

고지식한 알고리즘(Brute Force)

  • 처음부터 끝까지 패턴 내의 문자들을 일일이 비교하는 방식으로 동작.
    시간복잡도 : O(MN)

KMP 알고리즘

  • 불일치가 발생한 앞 부분에 대하여 다시 비교하지 않고 매칭을 수행
    *O(M+N)

보이어-무어 알고리즘

오른쪽에서 왼쪽으로 비교 /

  • 빅오 O(n) 보다는 시간이 적게 걸림.
profile
다재다능

0개의 댓글