Odwrócenie wartości - Java SE

0

Witam,
Robie małe zadanka z Javy i przy jedny z nich mam problem. Na wejściu dostaję Strina

 String s = "hSgdHQ\nHnDMao\nClNNxX\niRvxxH\nbqTVvA\nwvSyRu";

Na wyjściu chcę dostać coś takiego:

 String r = "QHdgSh\noaMDnH\nXxNNlC\nHxxvRi\nAvVTqb\nuRySvw";

Aktualnie odwracam wartości pomiędzy "\" lecz nie wyglądają tak jakbym chciał czyli:
uRySvw
AvVTqb
HxxvRi
XxNNlC
oaMDnH
QHdgSh

Mój kod:

 public static String mirror(String string) {
		String result = "";
		char[] tab = string.toCharArray();
		int right = tab.length - 1 ;
		for(int left = 0; left < right; left++, right--){
			char temp = tab[left];
			tab[left] = tab[right];
			tab[right] = temp;
		}
		for(char c : tab){
			result += c;
		}
		
		return result;
	}
2

Biorąc pod uwagę że nie ma tam w ogóle żadnego \ tylko \n (to jest jedne znak...) to dziwie się ze tu w ogóle cokolwiek działa. Poza tym wymyślasz koło na nowo bo można zrobić choćby new StringBuilder(cośtam).reverse().toString() i już. Więc u ciebie można zrobić dane.split("\n") i na każdym elemencie reverse a potem na nowo skleić.

Czyli:

String r = Arrays.stream(s.split("\n"))
        .map(x -> new StringBuilder(x).reverse().toString())
        .collect(Collectors.joining("\n"));
0

Przykład bez stream API

import java.lang.StringBuilder;

public class Main {
    
    public static String mirror(String string) {
            String result = "";
            String[] tab = string.split("\n");
            
            for (int i = 0; i < tab.length; i++) {
                result += new StringBuilder(tab[i]).reverse().toString() + "\n";
           }
    
            return result;
        }

    public static void main(String[] args) {
        Main m = new Main();
        String s = "hSgdHQ\nHnDMao\nClNNxX\niRvxxH\nbqTVvA\nwvSyRu";
        System.out.println(m.mirror(s));
    }
}

Pisane na kolanie, więc nie daję gwarancji. Ewentualnie zamiast hardkodować "\n" dodaj jako parametr do metody mirror

1 użytkowników online, w tym zalogowanych: 0, gości: 1