문자 배열 에 있 는 모든 문자 가 한 번 만 나타 나 는 지 판단 합 니 다.
1629 단어 프로그래머 코드 면접 안내
하나의 문자 형식 배열 chas 를 지정 하여 chas 에 모든 문자 가 한 번 밖 에 나타 나 지 않 았 는 지 판단 합 니 다.
[기본 아이디어]
시간 복잡 도가 O(N)인 알고리즘 해시 테이블 을 사용 하여 문자 마다 나타 나 는 빈 도 를 기록 합 니 다.문자 의 빈도 가 1 이 아 닌 것 을 발견 하면 False 로 되 돌아 갑 니 다.
2.시간 복잡 도 는 O(NLogN)이 고 공간 복잡 도 는 O(1)의 알고리즘 입 니 다. 1.배열 을 정렬 한 다음 현재 문자 가 이전 문자 와 같 는 지 판단 하면 됩 니 다. 2.어떤 정렬 알고리즘 을 사용 하 느 냐 가 관건 이 고 복잡 도 요 구 를 만족 시 키 는 알고리즘 은 재 귀 판 이 아 닌 더미 정렬 만 있 습 니 다.
C++버 전:
#include
#include
using namespace std;
//
void heapInsert(string& s,int i){
int parent=0;
while(i)
{
parent=(i-1)/2;//
if(s[parent]>=s[i])
break;
swap(s[parent],s[i]);
i=parent;
}
return ;
}
// ,
void heapify(string &s,int i,int length){
//
int left=i*2;
int right=i*2+1;
int largest=i;
while(lefts[i])
largest=left;
if(rights[largest])
largest=right;
if(largest==i)
break;
else
swap(s[largest],s[i]);
left=largest*2;
right=largest*2+1;
}
}
void heapsort(string& s){
for(int i=0;i0;i--)
{
swap(s[0],s[i]);//
heapify(s,0,i);
}
return ;
}
bool isUnique(string& s){
int n=s.size();
if(n==0) return false;
heapsort(s);
for(int i=1;i>s;){
cout<
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
피보나치 수열 문제의 귀착과 동태 기획 3제목 설명 설명 입력: 출력 설명: 입력 출력 1 ≤ n ≤ 1 0 18 1\leq n\leq 10^{18} 1≤n≤1018 점차적 공식: F(n) = F(n -3) + F(n -3) F(n) = F(n -1) + ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.