Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. import java.util.Arrays;
  2.  
  3. public class Anagram {
  4. public static void main(String[] args) {
  5. System.out.println(Arrays.toString(subAnagram("dirty", 1)));
  6. }
  7.  
  8. public static String[] subAnagram(String input, int n) {
  9. int inputLength = input.length();
  10. String[][] result = new String[inputLength][];
  11.  
  12. // recursive
  13. if(inputLength <= n) {
  14. // special case
  15. if(inputLength == 2) {
  16. String[] returnValue = new String[2];
  17. returnValue[0] = input.substring(1, 2) + input.substring(0, 1);
  18. returnValue[1] = input;
  19. return returnValue;
  20. } else if(n == 1 && inputLength == 1) {
  21. return new String[]{input};
  22. }
  23. //default case
  24. for(int i = 0; i < inputLength; i++) {
  25. String[] resultFromAnagram = subAnagram(input.substring(0, i) + input.substring(i+1), n);
  26. for(int j = 0; j < resultFromAnagram.length; j++) {
  27. resultFromAnagram[j] = input.substring(i, i+1) + resultFromAnagram[j];
  28. }
  29. result[i] = resultFromAnagram;
  30. }
  31. } else {
  32. for(int i = 0; i < inputLength; i++) {
  33. result[i] = subAnagram(input.substring(0, i) + input.substring(i+1), n);
  34. }
  35. }
  36.  
  37. // convert 2D array to 1D Array
  38. String[] processedResult = new String[result.length * result[0].length];
  39. for(int i = 0; i < result.length; i++) {
  40. for(int j = 0; j < result[0].length; j++) {
  41. processedResult[j + (i*result[0].length)] = result[i][j];
  42. }
  43. }
  44.  
  45. // find number of Original value in array
  46. int lengthOfnewArray = 0;
  47. for(int i = 0; i < processedResult.length; i++) {
  48. for(int j = i-1; j >= 0; j--) {
  49. if(processedResult[i].equals(processedResult[j])) {
  50. lengthOfnewArray--;
  51. break;
  52. }
  53. }
  54. lengthOfnewArray++;
  55. }
  56.  
  57. // Create new Array without dulicated value
  58. if(processedResult.length == lengthOfnewArray) {
  59. return processedResult;
  60. } else {
  61. String[] finalResult = new String[lengthOfnewArray];
  62. int count = 0;
  63. for(int i = 0; i < processedResult.length; i++) {
  64. if(!Arrays.asList(finalResult).contains(processedResult[i])) {
  65. finalResult[count] = processedResult[i];
  66. count++;
  67. }
  68. if(count >= lengthOfnewArray) {
  69. break;
  70. }
  71. }
  72. return finalResult;
  73. }
  74. }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement