문자열 에 중복 문자 가 있 는 지 판단 하고 추가 액 데이터 구 조 를 사용 하지 않 습 니 다.

Career Cup 한 문제.원제: 문자열 에 모든 고유 문자 가 있 는 지 확인 하 는 알고리즘 을 구현 합 니 다. What if you can not use additional data structures?
additional data structures 제 이 해 는 제 가 다시 정의 한 데이터 구 조 를 말 합 니 다.여기 서 배열, bitset, 그리고 int 형식 수 를 고려 합 니 다.
여기 서 배열, bitset, 그리고 int 형식 수 를 고려 합 니 다.  string 은 ASCII 로 8 위 를 차지 하 며 모두 256 개 입 니 다.왼쪽 에서 오른쪽으로 문자열 을 스 캔 하고 나타 난 문 자 를 기록 하면 두 번 째 가 다시 나타 날 때 판단 할 수 있 습 니 다.bool 배열, bieset 를 사용 할 수 있 습 니 다. a - z 의 소문 자 만 있 으 면 26 을 저장 하면 됩 니 다. int 수 (32 비트) 를 사용 하면 됩 니 다.
1. bool 배열 로
bool isUniqueChars1(string &str)
{
	bool *char_set=new bool[256];
	memset(char_set,0,256);
	for(int i=0; i

2. bieset 로
bool isUniqueChars2(string &str)
{
	bitset<256> char_set;
	char_set.reset();
	for(int i=0; i

3. int 수로 문자열 이 a - z 문자 만 포함 된다 고 가정 합 니 다.
bool isUniqueChars3(string &str) 
{
	int checker=0;
	for(int i=0; i0)
			return false;
		checker|=(1<

문자열 을 옮 겨 다 니 며 모든 문 자 를 다른 문자 와 비교 하면 시간 복잡 도 O (n ^ 2) 이지 만 추가 공간 은 필요 없습니다.
문자열 을 흐 트 러 뜨리 는 것 을 허용 한다 면 문자열 을 정렬 하고 다시 한 번 스 캔 하면 됩 니 다.정렬 복잡 도 O (nlogn).

좋은 웹페이지 즐겨찾기