티스토리 뷰

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/* 
 코딩인터뷰 완전분석 - 배열과 문자열 1.1
 문자열에 포함된 문자들이 전부 유일한지를 검사하는 알고리즘을 구현하라. 다른 자료구조를 사용할 수 없는 상황이라면 어떻게 하겠는가?
*/
 
 
// brute force
// 빈 배열 arrText를 하나 만들어놓고, 입력된 문자열을 읽어들이면서 배열에 추가한다.
// 배열에 추가할때 arrText를 순차검색하며 기존에 있던 문자열인지 아닌지를 검사한다.
// arrText에 있던 문자열이면 바로 false를 반환한다.
 
func isUniqueChars(str: String-> Bool {
    var arrText:[Character] = []
    
    for ch in str.characters {
        // arrText를 검색하고, 기존에 있었던 문자면 바로 false 반환, 기존에 없었던 문자라면 arrText에 추가
        for chInArr in arrText {
            if chInArr == ch {
                return false
            }
        }
        arrText.append(ch)
    }
    return true
}
 
isUniqueChars("apple")      // false(중복 있음)
isUniqueChars("Cat, Dog!")  // true
 
// 개선점
// 1. 문자열의 길이가 문자집합의 크기보다 클 경우 바로 false를 반환하면 더욱 속도를 빠르게 할 수 있다.
//    예를 들어, ASCII의 경우 128가지의 문자가 존재하는데, 문자열의 길이가 130이라면 무조건 중복이 있다는 뜻이다.
//    단, 이 방법은 문자열이 알파벳이나, ASCII 코드이거나 하는 제한형식을 알 경우에만 사용 가능하다.
 
 
cs


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함