# Buchstaben vergleichen (String)



## Java_Cup (20. Dez 2005)

´Hallo, 
mit dem Vergleichen der einzelnen Buchstaben in einem String klappt es eigentlich schon, aber leider vergleicht es nur nach der Reihenfolge.

Beispiel: sollen die beiden Strings "Gras" und "Sarg" einzel verglichen werden,(die beiden Strings sind immer gleich lang)  und es soll true rauskommen, 
>Gras Sarg -->true
leider vergleicht das Programm die beiden Strings nach der Reihe nach, somit kann es nie true werden



```
String s1 ="Gras";
String s2="Sarg";
char ch1=0;ch2=0;
int counter=0;
while(counter<s1.length()){ 

ch1=s1.charAt(counter);

ch2=s2.charAt(counter);

counter++;

if(ch==ch2)
System.out.print(true);
else System.out.print(false);
```




 ???:L


----------



## Mag1c (20. Dez 2005)

Hi,

sollen die Strings immer gleich lang sein ?

ist die Anzahl der Zeichen auch relevant

saarg <-> graas ?
saarg <-> grras ?

Gruß
Mag1c


----------



## Java_Cup (20. Dez 2005)

Mag1c hat gesagt.:
			
		

> Hi,
> 
> sollen die Strings immer gleich lang sein ?
> 
> ...



also die Zeichen sind IMMER gleich lang!DEr Sinn liegt darin mit genau den selben Buchstaben ein neues Wort zu erstellen.
zum Beispiel: Erbgut und Geburt...es wurde mit den Buchstabden e r b g u und t einfach ein neues Wort gebildet und zwar geburt, 
genauso wie gras... s a r g , sargs, ..u.sw.


----------



## Bleiglanz (20. Dez 2005)

schnelllösung

```
String erster = "Gras";
String zweiter = "Sarg";

char[] erstes = erster.toLowerCase().toCharArray();
char[] zweites = zweiter.toLowerCase().toCharArray();

java.util.Arrays.sort(erstes);
java.util.Arrays.sort(zweites);

System.out.println(java.util.Arrays.equals(erstes,zweites));
```

mit den String-Funktionen und charAt zu arbeiten ist wohl
etwas trickreich, weil Buchstaben ja mehrfach vorkommen können...


----------



## Mag1c (20. Dez 2005)

Hmm,

am besten, du sortierst beide Wörter nach Buchstaben und vergleichst das Ergebnis. Das muß dann immer gleich sein.


```
String s1 = "gras";
    String s2 = "sarg";
    char[] s1buf = s1.toLowerCase().toCharArray();
    char[] s2buf = s2.toLowerCase().toCharArray();
    Arrays.sort(s1buf);
    Arrays.sort(s2buf);
    System.out.println("result = "+Arrays.equals(s1buf, s2buf));
```

EDIT: *LOL* wieder mal zu langsam  ???:L 

Gruß
Mag1c


----------



## André Uhres (20. Dez 2005)

--wollte grad dasselbe posten  :applaus:


----------



## Bleiglanz (20. Dez 2005)

ahh jetzt ists mir wieder eingefallen wo reverse steckt

```
erster.equalsIgnoreCase(new StringBuilder(zweiter).reverse().toString())
```
wäre die bessere Lösung gewesen, wenn GRAS - SARG nach der umgedrehten Reihenfolge gefragt war
ansonsten gibts wohl nur das mit den Arrays


----------



## Java_Cup (20. Dez 2005)

Danke schön.... :wink:


----------



## André Uhres (20. Dez 2005)

..aber die reverse Methode nützt hier nichts (siehe Erbgut und Geburt)  :wink:


----------

