이번에는 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] 반복되지 않는 첫번째 문자를 찾아라 (3) | 2010/02/19 |
| [CS] 16진수를 10진수로 바꾸어보자 (0) | 2010/02/18 |
| [CS] 배열에서 두번째로 작은 수를 구하기 (2) | 2010/02/18 |






