Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

문자열의 고유한 순열을 인쇄하는 Java 프로그램

<시간/>

문자열의 고유한 순열을 인쇄하려면 Java 프로그램은 다음과 같습니다. -

예시

import java.util.ArrayList;
public class Demo{
   static boolean is_present(String my_str, ArrayList<String> rem){
      for (String str : rem){
         if (str.equals(my_str))
         return true;
      }
      return false;
   }
   static ArrayList<String> distinct_pattern(String str){
      if (str.length() == 0){
         ArrayList<String> base_Val = new ArrayList<>();
         base_Val.add("");
         return base_Val;
      }
      char ch = str.charAt(0);
      String rem_str = str.substring(1);
      ArrayList<String> prev_str = distinct_pattern(rem_str);
      ArrayList<String> rem = new ArrayList<>();
      for (String my_str : prev_str){
         for (int i = 0; i <= my_str.length(); i++){
            String f = my_str.substring(0, i) + ch + my_str.substring(i);
            if (!is_present(f, rem))
            rem.add(f);
         }
      }
      return rem;
   }
   public static void main(String[] args){
      String my_str = "mnqm";
      System.out.println("The distinct permutations of the string are ");
      System.out.println(distinct_pattern(my_str));
   }
}

출력

The distinct permutations of the string are
[mnqm, nmqm, nqmm, mqnm, qmnm, qnmm, mqmn, qmmn, mnmq, nmmq, mmnq, mmqn]

Demo라는 클래스에는 문자열이 실제로 존재하는지 확인하는 'is_present'라는 부울 함수가 포함되어 있습니다. 문자열에 일부 문자가 있는지 여부에 따라 true 또는 false를 반환합니다. 'distinct_pattern'이라는 또 다른 함수는 arraylist를 생성합니다.

문자열의 하위 문자열을 저장하는 'rem_str'이라는 또 다른 문자열이 정의됩니다. 이 'distinct_function'은 'rem_str'을 전달하여 호출됩니다. 이런 식으로 문자열이 반복되고 모든 문자의 위치가 확인된 후 다른 고유한 순열이 생성됩니다. 이런 식으로 allduplicates를 피할 수 있습니다. 결국 모든 고유 순열이 콘솔에 표시됩니다. main 함수는 문자열을 정의하고 이 문자열에 대해 'distinct_pattern' 함수가 호출됩니다. 콘솔에 관련 출력이 표시됩니다.