티스토리 뷰
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 |
'Dev: 개발 > Algorithm' 카테고리의 다른 글
징검다리를 건너는 경우의 수 구하기 (1) | 2016.11.02 |
---|---|
한 쌍의 수를 이동 없이 바꾸는 함수를 작성하라. (임시변수는 사용할 수 없다.) (0) | 2016.09.11 |
두 개의 Stack으로 하나의 Queue를 구현하라. (0) | 2016.08.24 |
코딩 인터뷰 스터디에 가입했다. (0) | 2016.08.23 |