Wpis z mikrobloga

@Bruno_: jak chcesz zoptymalizować to:
int[] chars = new int[26];
for (int i = 0; i < slowo1.length(); i++) {
chars[slowo1.charAt(i) - 'a')]++;
}
for (int i = 0; i < slowo1.length(); i++) {
chars[slowo2.charAt(i) - 'a')]--;
}
// tu se jeszcze sprawdz czy w tabliy są same zera i gotowe
@Philopolemus_Fronius
Anagram – nazwa wywodząca się od słów greckich: ana- (nad) oraz grámma (litera), oznacza wyraz, *wyrażenie lub całe zdanie* powstałe przez przestawienie liter bądź sylab innego wyrazu lub zdania, wykorzystujące wszystkie litery (głoski bądź sylaby) materiału wyjściowego.
@Bruno_: Tak na szybko bo dawno nie pisałem kodu:
- skoro sprawdziłeś długość słów i mają taką samą to użyj jednej pętli do przepisywania ich znaków a nie dwóch
- a czy w ogóle zamiast przepisywać znak po znaku nie można było skorzystać z String.toChar() ?
- no i nie sprawdzasz czy w ogóle są dwa słowa (może być jedno albo wcale)
@YogiYogi: co do drugiej uwagi: nie, ponieważ toChar zwraca tablice obiektów char, a listy nie działają na tych obiektach (prostych się nazywały? nie pamiętam) tylko na Character w tym przypadku
chyba że bym jakoś przekonwertował char na Character, ale próbowałem i nie udało się, ponieważ wyskakiwał błąd że nie da się zmienić char[] na Character (czytam troche google i nikt nie napisał jak zmienić na Character[] ( ͡° ʖ̯
@Bruno_: Dobra, poprawiłem na szybko, nie ma za co (na pewno jeszcze można optymalizować kosztem czytelności, oraz dodaj obsługę błędów i jakieś zaproszenia do wprowadzania danych):

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
char[] slowo1, slowo2;

// usuwam spacje z wprowadzonych słów
slowo1 = (scanner.next()).trim().toCharArray();
slowo2 = (scanner.next()).trim().toCharArray();

// jeśli różnią się długością, zakończ program
if(slowo1.length != slowo2.length)
return;

Arrays.sort(slowo1);
Arrays.sort(slowo2);

// sprawdzam czy są takie same
@YogiYogi: Pytanie czy ten program ma porównywać tylko pojedyncze słowa czy całe zdania bo jeśli zdania to nie zadziała, bo wtedy jak rozumiem różna liczba spacji w porównywanych zdaniach nie powinna mieć znaczenia, a jedynym warunkiem jest użycie tych samych liter w tej samej liczbie.

Anagram [..] oznacza wyraz, wyrażenielub całe zdanie powstałe przez przestawienie liter bądź sylab innego wyrazu lub zdania, wykorzystujące wszystkie litery (głoski bądź sylaby) materiału wyjściowego.
@TomaszWKS: Wiesz, uwagi jak najbardziej słuszne (sam trim jest niewystarczający jeśli wyrazy rozdzielają przecinki albo inne znaki specjalne) ale nie do mnie tylko autora wątku, który tak rozpoczął zadanie :)
Tutaj jak rozumiem chodzi mu o pojedyncze słowa bo to jakieś zadanie dla początkujących.
Tym niemniej jakieś zabezpieczenia i sprawdzenia należy wprowadzić.
Teraz @Bruno_ niech troszkę popracuje z funkcjami na stringach :) a my wskazaliśmy mu drogę.