Home > Net >  How to ignore spaces while Sorting a string in java?
How to ignore spaces while Sorting a string in java?

Time:11-24

i tried to code a programm to detect an anagram with 2 Strings given. My approach is to convert both strings to char Arrays and then sort them before comparing them. I know i could use the sort.() function but i dont want to use any imports for training porpuses.

The problem is i want my programm to ignore blanks while scanning for an anagram. in the current version the ouput is like this: (triangle, relating) ---> true (tri angle, relating) ---> false

while it should be both true.

i would be thankful for any help!

heres my code, (please ignore my comments):

public static boolean anagramCheck(String a, String b) {
        boolean r = true;
        // In Char Arrays umwandeln /
        char[] Ca = a.toCharArray();
        char[] Cb = b.toCharArray();

        // Laengen Abfrage
        int L1 = Ca.length;
        int L2 = Cb.length;

        // Erste For-Schleife

        for (int i = 0; i < L1; i  ) {
            for (int j = i   1; j < L1; j  ) {
                if (Ca[j] < Ca[i]) {
                    char temp = Ca[i];
                    Ca[i] = Ca[j];
                    Ca[j] = temp;
                }
            }
        }

        // Zweite For-schleife

        for (int i = 0; i < L2; i  ) {
            for (int j = i   1; j < L2; j  ) {
                if (Cb[j] < Cb[i]) {
                    char temp = Cb[i];
                    Cb[i] = Cb[j];
                    Cb[j] = temp;
                }
            }
        }

        // Char Arrays zu Strings
        String S1 = String.valueOf(Ca);
        String S2 = String.valueOf(Cb);

        // Vergleich und Ausgabe

        if (S1.compareTo(S2) == 0) {
            return r;
        }

        else {
            r = false;
            return r;
        }

    }
}

CodePudding user response:

The String.replace(String, String) is the non-regexp replace method. So remove all spaces:

    String S1 = String.valueOf(Ca).replace(" ", "");
    String S2 = String.valueOf(Cb).replace(" ", "");

It would be nicer to do this on a and b.

CodePudding user response:

public static boolean isAnagram(String one, String two) {
    char[] letters = new char[26];

    for (int i = 0; i < one.length(); i  ) {
        char ch = Character.toLowerCase(one.charAt(i));

        if (Character.isLetter(ch))
            letters[ch - 'a']  ;
    }

    for (int i = 0; i < two.length(); i  ) {
        char ch = Character.toLowerCase(two.charAt(i));

        if (Character.isLetter(ch))
            letters[ch - 'a']--;
    }

    for (int i = 0; i < letters.length; i  )
        if (letters[i] != 0)
            return false;

    return true;
}
  • Related