두 개의 문자열이 Anagram인지 확인하는 Java 프로그램 | 아나그램 프로그램

게시 됨: 2021-07-23

목차

Java에 대해 덜 알려진 사실

가장 내구성 있는 프로그래밍 언어 중 하나인 Java는 강력하고 유연한 기능으로 인해 전 세계적으로 사용됩니다. Java의 안정성과 다양성으로 인해 Java는 가장 인기 있는 프로그래밍 언어 중 하나가 되었습니다. 그러나 이 보안 프로그래밍 언어에 대해 잘 알려지지 않은 몇 가지 사실이 있습니다. 그 중 몇 가지를 알아보겠습니다.

  • Oak는 Java의 원래 이름입니다.
  • 이 프로그래밍 언어를 배우면서 많은 돈을 벌 수 있습니다.
  • Java는 세계에서 두 번째로 인구가 많은 프로그래밍 언어이며 첫 번째는 C입니다.
  • 전 세계적으로 약 30억 개의 장치가 Java에서 작동하고 있습니다.
  • Java는 대소문자를 구분하는 프로그래밍 언어입니다. 즉, "최종"과 "최종"은 Java 코드에서 동일하지 않습니다. Java가 개발자들에게 인기 있는 이유에 대해 자세히 알아보세요.

아나그램 개요

문자열이 문자를 재배열하여 다른 문자열로 변환되면 두 문자열을 서로의 아나그램이라고 합니다. 그러나 초기 문자열의 문자 수와 획득한 문자열은 같아야 합니다. 아나그램의 개념을 더 잘 이해하기 위해 'god'와 'dog'라는 두 개의 문자열을 살펴보겠습니다.

'god'와 'dog' 문자열은 'd'와 'g' 문자의 위치를 ​​바꾸는 것만으로 전자의 문자열을 재배열하여 후자를 얻을 수 있기 때문에 서로의 아나그램입니다. 두 개의 입력 문자열에 대해 각 문자의 빈도를 계산하여 문자열이 서로의 아나그램인지 여부를 확인합니다. 따라서 문자열의 아나그램은 모든 시퀀스의 입력 문자열과 동일한 빈도로 동일한 문자를 갖는 다른 문자열로 정의할 수 있습니다.

Java의 아나그램 프로그램 알고리즘

1단계: 두 개의 입력 문자열을 정의합니다.

2단계: 각 문자열의 길이가 결정됩니다. 입력 문자열은 문자열 길이가 다른 경우 서로의 아나그램이 아닙니다.

3단계: 문자열의 길이가 같은 경우 문자열 문자는 비교를 쉽게 하기 위해 소문자로 변환됩니다.

4단계: 문자열 문자는 내장 함수로 정렬되거나 문자 배열로 변환된 다음 정렬됩니다.

5단계: 정렬된 문자 배열이 동일한지 확인합니다.

Java로 Anagram 프로그램 구현

두 문자열이 아나그램인지 여부를 찾는 코드를 구현하는 몇 가지 솔루션이 있습니다. 후속 섹션에서 논의되는 각 솔루션에 대해 위에 설명된 알고리즘의 2단계는 기초를 형성하고 문자열 길이가 일치하지 않는 경우 조기 종료를 용이하게 합니다. 다음 섹션에서는 아나그램 논리를 위한 코드 작성의 다양한 유형에 대해 자세히 알아보겠습니다.

정렬 방식

각 입력 문자열의 문자는 두 개의 정규화된 문자 배열을 얻기 위해 정렬될 수 있습니다. 두 입력 문자열의 정규화된 배열이 동일한 경우 문자열은 서로의 아나그램으로 간주되며 그 반대의 경우도 마찬가지입니다.

이 코드를 이해하고 구현하는 것이 더 쉽습니다. 위 솔루션의 시간 복잡도는 O(n log n)이고 입력 문자열의 문자 배열을 저장하기 위해 추가 공간이 필요합니다.

세계 최고의 대학에서 온라인으로 소프트웨어 개발 과정배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

Anagram 논리 구현에 대한 계산 접근 방식

이 접근 방식에서는 두 입력 문자열에서 각 문자의 존재 수를 측정합니다. 두 문자열에서 각 문자의 빈도가 동일하면 문자열은 서로의 아나그램입니다.

메모리를 절약하기 위해 단일 히스토그램을 작성해 보겠습니다. 첫 번째 문자열에서 각 문자의 개수는 증가하고 두 번째 문자열의 경우 감소합니다. 궁극적인 결과가 모든 것을 0으로 균형을 맞추면 문자열은 아나그램입니다.

이 솔루션은 이전 솔루션보다 빠르게 실행되며 시간 복잡도는 O(n)입니다. 그러나 문자 수를 계산하려면 추가 공간이 필요합니다. 이 솔루션은 문자 범위가 더 작은 문자열에만 실질적으로 효과적입니다. 이 솔루션에 대한 또 다른 사실은 제한된 수의 내장 Java 기능을 사용하므로 코드 길이가 증가한다는 것입니다.

확인: Java 프로젝트 아이디어 및 주제

MultiSet으로 확인하여 아나그램 결정

동일한 요소와 순서 독립적인 비교를 지원하는 컬렉션인 MultiSet을 사용하면 이 솔루션에서 계산 및 비교 프로세스가 간소화됩니다.

각 입력 문자열은 처음에 다중 문자 집합으로 변환된 다음 패리티를 확인합니다.

이 솔루션의 시간 복잡도는 O(n)입니다. 아나그램을 결정하기 위한 계산 방식과 유사합니다. 그러나 길이가 더 긴 문자열에 대해서는 효율적으로 작동할 수 있습니다. 또한 코딩에는 더 많은 수의 Java 라이브러리 기능이 포함됩니다.

아나그램을 결정하기 위한 문자 기반 접근 방식

지금까지 논의된 모든 솔루션은 구두점 문자도 문자열의 일부로 간주합니다. 또한 이러한 솔루션은 대소문자를 구분합니다. 문자 기반 접근 방식은 아나그램의 언어적 정의를 기반으로 입력 문자열을 확인하는 코드를 구현합니다. 이 접근 방식에서 공백과 구두점은 입력 문자열의 일부로 간주되지 않습니다.

문자 기반 솔루션을 구현하는 초기 단계는 원치 않는 문자를 제거하고 모든 유효한 문자를 소문자로 변환하는 것입니다. 이 단계 후에 위에서 논의한 구현 중 하나를 사용하여 문자열이 아나그램인지 여부를 확인할 수 있습니다.

Java, 전체 스택 소프트웨어 개발에 대해 자세히 알아보려면 upGrad & IIIT-B의 소프트웨어 개발 이그 제 큐 티브 PG 프로그램 - 전문가를 위해 설계되었으며 500 시간 이상의 엄격한 교육을 제공하는 전체 스택 개발 전문화를 확인하십시오. , 9개 이상의 프로젝트 및 과제, IIIT-B 동문 자격, 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

당신의 꿈의 직업에 착륙

IIIT-B에서 소프트웨어 개발의 이그 제 큐 티브 PG 프로그램 신청