문자열 에 중복 문자 가 있 는 지 판단 하고 추가 액 데이터 구 조 를 사용 하지 않 습 니 다.
1411 단어 면접 필기시험 문제
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).
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[회전 알고리즘] 슬라이딩 창전체 배열 과 숫자 s 를 지정 합 니 다. 배열 에서 가장 짧 은 연속 서브 배열 을 찾 아 연속 서브 배열 의 숫자 와 sum > = s 를 찾 아 이 가장 짧 은 연속 서브 배열 의 반환 값 을 되 돌려 줍 니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.