이번에는 string에서 반복되지 않는 첫번째 문자를 찾아본다. 예를 들면 "appropriate"에서 o를 선택하면 되는 것이다. 문자열의 길이를 n이라고 하면 O(n)인데 실제로는 n을 최대 두번 읽는다. 더 좋은 방법은 없을까?
#include <iostream> using namespace std; char firstchar(string str) { char ch[128]; char tmp; for (int i = 0; i < 128; i++) ch[i] = 0; int len = str.length(); for (int i = 0; i < len; i++) { tmp = str.at(i); ch[tmp]++; } for (int i = 0; i < len; i++) { tmp = str.at(i); if (ch[tmp] == 1) return tmp; } return NULL; } main() { string str[] = {"Niceee", "babbyddas", "Gorooeadsjfabdfmadslfdlfa", "a", "aabb"}; for (int i = 0; i < 5; i++) cout << firstchar(str[i]) << endl; }
'[아는게 힘이다] > [프로그래밍]' 카테고리의 다른 글
[CS] 퀵 정렬 (Quick Sort) (2) | 2010.02.22 |
---|---|
[CS] 비트 매스크(Bit Mask) (2) | 2010.02.21 |
[CS] 16진수를 10진수로 바꾸어보자 (0) | 2010.02.18 |
[CS] 배열에서 두번째로 작은 수를 구하기 (2) | 2010.02.18 |