Mam "Hello World"
przechowywane w zmiennej o nazwie String hi
.
Muszę to wydrukować, ale odwrócone.
W jaki sposób mogę to zrobić? Rozumiem, że jest taka funkcja wbudowana w Javę, która to robi.
Powiązane: Odwróć każde pojedyncze słowo ciągu „Hello World” za pomocą Java
Odpowiedzi:
Możesz użyć tego:
Lub, w wersjach wcześniejszych niż JDK 1.5, użyj
java.util.StringBuffer
zamiastStringBuilder
- mają ten sam interfejs API. Dzięki komentatorom za wskazanie, żeStringBuilder
jest to obecnie preferowane, gdy nie ma obaw o współbieżność.źródło
StringBuilder
współbieżnością zrzucaną nie stanowi problemu (i myślę, że o to mu chodziło).String hi = "Hello World";
. Więc myślę, że w swojej odpowiedzi nie powinno nie być żadnych cudzysłowiehi
. Mam na myśli, że tak powinno byćnew StringBuilder(hi).reverse().toString()
Dla Online Judges problemy , które nie pozwalają
StringBuilder
lubStringBuffer
można to zrobić w miejscu, używającchar[]
w następujący sposób:źródło
http://www.java2s.com/Code/Java/Language-Basics/ReverseStringTest.htm
źródło
źródło
Robię to za pomocą następujących dwóch sposobów:
Odwróć ciąg przez CHARACTERS:
Odwróć ciąg przez WORDS:
źródło
Spójrz na API Java 6 w StringBuffer
źródło
reverse()
itoString()
), więc różnica prawdopodobnie nawet nie będzie wymierny.Oto przykład z wykorzystaniem rekurencji:
źródło
Oto rozwiązanie niskiego poziomu:
źródło
Próbowałem, dla zabawy, używając stosu. Oto mój kod:
źródło
Ponieważ poniższa metoda (przy użyciu XOR ) do odwrócenia łańcucha nie ma na liście, dołączam tę metodę do odwrócenia ciągu.
Algorytm opiera się na:
Fragment kodu:
Wynik:
keetarp
źródło
Jak zauważyli inni, preferowanym sposobem jest użycie:
Ale jeśli chcesz to wdrożyć samodzielnie, obawiam się, że reszta odpowiedzi ma wady.
Powodem jest to, że
String
reprezentuje listę punktów Unicode , zakodowanych wchar[]
tablicy zgodnie z kodowaniem o zmiennej długości: UTF-16 .Oznacza to, że niektóre punkty kodowe wykorzystują pojedynczy element tablicy (jedna jednostka kodowa), ale inne używają dwóch z nich, więc mogą istnieć pary znaków, które muszą być traktowane jako pojedyncza jednostka (kolejne surogaty „wysoki” i „niski”) .
źródło
Jest bardzo prosty w minimalnym kodzie linii
źródło
To załatwiło sprawę
źródło
1. Korzystanie z tablicy znaków:
2. Korzystanie z StringBuilder:
LUB
źródło
Użyłem tej metody, aby odwrócić nazwy do tyłu i na małe litery.
źródło
źródło
Jednym z naturalnych sposobów odwrócenia a
String
jest użycieStringTokenizer
stacka i stosu.Stack
to klasa, która implementuje łatwy w użyciu stos obiektów typu „ostatni przyszło, pierwszy wyszedł” (LIFO).Umieść go w stosie do przodu
Wydrukuj stos do tyłu
źródło
źródło
Wszystkie powyższe rozwiązania są zbyt dobre, ale tutaj tworzę wsteczny ciąg przy użyciu programowania rekurencyjnego.
Jest to pomocne dla osób poszukujących rekurencyjnego sposobu wykonywania łańcucha zwrotnego.
źródło
Procedura:
Możemy użyć split () do podzielenia łańcucha. Następnie użyj pętli zwrotnej i dodaj znaki.
Fragment kodu:
źródło
public String reverseword (String s) {
źródło
Możesz także spróbować tego:
źródło
źródło
rekurencja:
źródło
Dla żartu..:)
Przejdź i od 0 do len / 2, a następnie
Złożoność czasu: O (n)
Złożoność przestrzeni kosmicznej: O (n)
źródło
źródło
źródło
źródło
źródło
Jeśli chcesz użyć prostej pętli for!
źródło