문자열이 있습니다. 해당 문자열에서 중복 문자를 제거하는 함수를 개발하십시오. 문자열의 길이는 제한 될 수 없습니다. 알고리즘은 공간에 있어야합니다. 원하는 경우 문자열 크기에 관계없이 일정한 크기의 추가 공간을 사용할 수 있습니다. 귀하의 알고리즘은 O (n)의 복잡성을 가져야합니다.재귀를 사용하지 않고 문자열에서 반복 문자 제거
내 생각은 0 번째 색인이 문자 a에 해당하고 25 번째 색인이 z에 해당하며 모든 요소를 0으로 초기화하는 26 크기의 정수 배열을 정의하는 것이 었습니다. 따라서 전체 문자열을 한 번 이동합니다 그리고 우리가 문자를 만날 때와 같이 원하는 색인의 값을 증가시킬 것입니다.
그리고 우리는 다시 한번 문자열을 여행 할 것이고, 원하는 색인의 값이 1이면 우리는 그렇지 않은 문자를 출력 할 것입니다.
이런 식으로 시간 복잡도는 O (n)이고 사용 된 공간은 문자열의 길이에 관계없이 일정합니다 !!
효율성이 더 좋은 아이디어가 있다면 도움이 될 것입니다.
추측이 숙제인가? 의사 코드가 괜찮습니까?예를 들어 PHP라면 배열에 추가 할 수 있고 크기는 가변적이며 여행 한만큼의 문자 만 사용하고 char가 검사되었는지는 in_array의 문제인지 확인합니다 (예 : – Purefan
). 문자열에'a'''''''만이''z''가 공평하다고 가정하면 생각하지 마십시오. 유니 코드에는 100 만 개 이상의 코드 포인트가 있습니다. –
@purefan 당신이 이미 볼 수 있듯이 이것은 숙제에 관한 질문이 아닙니다. 인터뷰 질문으로 태그를 붙였습니다. – Poulami