logo

Java에서 문자열 뒤집기

이 문서에서는 예제를 통해 Java에서 문자열을 뒤집는 다양한 방법을 설명합니다.

예:

문자열 역방향



Prerequisite:  String vs StringBuilder vs StringBuffer in Java>

다음은 String 및 StringBuilder 클래스에 대한 몇 가지 흥미로운 사실입니다.

  1. String의 객체는 변경할 수 없습니다.
  2. Java의 String 클래스에는 reverse() 메서드가 없지만 StringBuilder 클래스에는 reverse() 메서드가 내장되어 있습니다.
  3. StringBuilder 클래스에는 toCharArray() 메서드가 없지만 String 클래스에는 toCharArray() 메서드가 있습니다.
1. The idea is to traverse the length of the string  2. Extract each character while traversing  3. Add each character in front of the existing string>

구현:

자바




100개 중 10개
// java program to reverse a word> import> java.io.*;> import> java.util.Scanner;> class> GFG {> >public> static> void> main (String[] args) {> > >String str=>'Geeks'>, nstr=>''>;> >char> ch;> > >System.out.print(>'Original word: '>);> >System.out.println(>'Geeks'>);>//Example word> > >for> (>int> i=>0>; i { ch= str.charAt(i); //extracts each character nstr= ch+nstr; //adds each character in front of the existing string } System.out.println('Reversed word: '+ nstr); } } //Contributed by Tiyasa>

>

>

산출

Original word: Geeks Reversed word: skeeG>

문자열을 바이트로 변환: getBytes() 메소드는 입력 문자열을 bytes[]로 변환하는 데 사용됩니다.

방법:

1. Create a temporary byte[] of length equal   to the length of the input string. 2. Store the bytes (which we get by using   getBytes() method) in reverse order into   the temporary byte[] . 3. Create a new String abject using byte[] to  store result.>

구현:

자바




// Java program to ReverseString using ByteArray.> import> java.lang.*;> import> java.io.*;> import> java.util.*;> // Class of ReverseString> class> ReverseString {> >public> static> void> main(String[] args)> >{> >String input =>'techcodeview.com'>;> >// getBytes() method to convert string> >// into bytes[].> >byte>[] strAsByteArray = input.getBytes();> >byte>[] result =>new> byte>[strAsByteArray.length];> >// Store result in reverse order into the> >// result byte[]> >for> (>int> i =>0>; i result[i] = strAsByteArray[strAsByteArray.length - i - 1]; System.out.println(new String(result)); } }>

>

자바의 참조변수
>

산출

skeeGrofskeeG>

StringBuilder 클래스의 내장 reverse() 메소드 사용:

String 클래스에는 reverse() 메서드가 없으므로 입력 문자열을 StringBuilder로 변환해야 하며 이는 StringBuilder의 추가 메서드를 사용하여 수행됩니다. 그 후, 처음부터 마지막 ​​인덱스까지 스캔하여 반전된 문자열의 문자를 인쇄합니다.

구현:

자바




// Java program to ReverseString using StringBuilder> import> java.lang.*;> import> java.io.*;> import> java.util.*;> // Class of ReverseString> class> ReverseString {> >public> static> void> main(String[] args)> >{> >String input =>'Geeks for Geeks'>;> >StringBuilder input1 =>new> StringBuilder();> >// append a string into StringBuilder input1> >input1.append(input);> >// reverse StringBuilder input1> >input1.reverse();> >// print reversed String> >System.out.println(input1);> >}> }>

>

>

산출

skeeG rof skeeG>

문자열을 문자 배열로 변환: 사용자가 반전할 문자열을 입력했습니다.

방법:

1. First, convert String to character array  by using the built in Java String class   method toCharArray(). 2. Then, scan the string from end to start,   and print the character one by one.>

구현:

자바




// Java program to Reverse a String by> // converting string to characters one> // by one> import> java.lang.*;> import> java.io.*;> import> java.util.*;> // Class of ReverseString> class> ReverseString {> >public> static> void> main(String[] args)> >{> >String input =>'GeeksForGeeks'>;> >// convert String to character array> >// by using toCharArray> >char>[] try1 = input.toCharArray();> >for> (>int> i = try1.length ->1>; i>=>0>; i--)> >System.out.print(try1[i]);> >}> }>

>

자바 문자열 정렬
>

산출

skeeGroFskeeG>
  • toCharArray()를 사용하여 입력 문자열을 문자 배열로 변환합니다. String 클래스의 내장 메소드인 toCharArray()를 사용하여 입력 문자열을 문자 배열로 변환합니다. 그런 다음 문자 배열을 양쪽, 즉 시작 인덱스(왼쪽)와 마지막 인덱스(오른쪽)에서 동시에 스캔합니다.
1. Set the left index equal to 0 and right   index equal to the length of the string -1. 2. Swap the characters of the start index   scanning with the last index scanning   one by one. After that, increase the left   index by 1 (left++) and decrease the right   by 1 i.e., (right--) to move on to the next   characters in the character array . 3. Continue till left is less than or equal to  the right.>

구현:

자바




// Java program to Reverse a String using swapping> // of variables> import> java.lang.*;> import> java.io.*;> import> java.util.*;> // Class of ReverseString> class> ReverseString {> >public> static> void> main(String[] args)> >{> >String input =>'Geeks For Geeks'>;> >char>[] temparray = input.toCharArray();> >int> left, right =>0>;> >right = temparray.length ->1>;> >for> (left =>0>; left // Swap values of left and right char temp = temparray[left]; temparray[left] = temparray[right]; temparray[right] = temp; } for (char c : temparray) System.out.print(c); System.out.println(); } }>

>

>

산출

skeeG roF skeeG>
  • ArrayList 객체 사용: 내장된 toCharArray() 메소드를 사용하여 입력 문자열을 문자 배열로 변환합니다. 그런 다음 배열의 문자를 ArrayList 개체에 추가합니다. Java에는 Collections 클래스에 대한 reverse() 메소드도 내장되어 있습니다. Collections 클래스 reverse() 메소드는 목록 객체를 취하므로 목록을 반전시키기 위해 문자 목록 유형인 ArrayList 객체를 전달합니다.
1. We copy String contents to an object   of ArrayList. 1. We create a ListIterator object by using   the listIterator() method on the ArrayList   object. 2. ListIterator object is used to iterate over   the list. 3. ListIterator object helps us to iterate   over the reversed list and print it one   by one to the output screen.>

구현:

자바




// Java program to Reverse a String using ListIterator> import> java.lang.*;> import> java.io.*;> import> java.util.*;> // Class of ReverseString> class> ReverseString {> >public> static> void> main(String[] args)> >{> >String input =>'Geeks For Geeks'>;> >char>[] hello = input.toCharArray();> >List trial1 =>new> ArrayList();> >for> (>char> c : hello)> >trial1.add(c);> >Collections.reverse(trial1);> >ListIterator li = trial1.listIterator();> >while> (li.hasNext())> >System.out.print(li.next());> >}> }>

>

>

산출

skeeG roF skeeG>

StringBuffer 사용:

String 클래스에는 reverse() 메서드가 없으므로 입력 문자열을 StringBuffer로 변환해야 하며 이는 StringBuffer의 reverse 메서드를 사용하여 수행됩니다.

구현:

자바

문자열 비교 C#




// Java program to demonstrate conversion from> // String to StringBuffer and reverse of string> import> java.lang.*;> import> java.io.*;> import> java.util.*;> public> class> Test {> >public> static> void> main(String[] args)> >{> >String str =>'Geeks'>;> >// conversion from String object to StringBuffer> >StringBuffer sbr =>new> StringBuffer(str);> >// To reverse the string> >sbr.reverse();> >System.out.println(sbr);> >}> }>

>

>

산출

skeeG>
  • 사용자로부터 입력을 받아 문자열 반전

자바




/*package whatever //do not write package name here */> import> java.io.*;> import> java.util.Scanner;> class> GFG {> >public> static> void> main (String[] args) {> >Scanner scanner =>new> Scanner(System.in);> >String Str = scanner.nextLine();> >char>[] arr = Str.toCharArray();> > >String rev =>''>;> > >for>(>int> i = Str.length() ->1>; i>=>0>; i--)> >{> >rev = rev + Str.charAt(i);> >}> > >System.out.println(rev);> > >}> }> >

자바의 tostring 메소드
>

>

산출

0>

위 코드에서는 새로운 반전 문자열을 생성하기 위해 반복 루프를 시작하기 전에 기본적으로 사용자로부터 문자열을 읽습니다. String 클래스의 charAt 함수는 원래 String의 각 문자를 끝부터 개별적으로 검색하는 데 사용되며, + 연산자는 이를 새 String으로 연결하는 데 사용됩니다.

스택 사용:

스택의 개념은 스택의 최상위 요소에만 액세스하므로 다음과 같은 2단계가 포함된다는 것입니다.

  1. 스택의 모든 문자를 푸시합니다.
  2. 스택에서 모든 문자를 팝하고 임시 문자열에 추가합니다.

아래는 위의 접근 방식을 구현한 것입니다.

자바




import> java.util.*;> class> GFG {> >public> static> void> main(String[] args) {> > >String s=>'Geeks For Geeks'>;> > >//initializing a stack of type char> >Stack stack=>new> Stack();> > >for>(>char> c:s.toCharArray())> >{> >//pushing all the characters> >stack.push(c);> >}> > >String temp=>''>;> > >while>(!stack.isEmpty())> >{> >//popping all the chars and appending to temp> >temp+=stack.pop();> >}> > >System.out.println(>'Reversed string is : '>+temp);> > >}> }> //This code is contributed by aeroabrar_31>

>

>

산출

Reversed string is : skeeG roF skeeG>

시간 복잡도 : O(N) N은 문자열의 길이입니다.

보조 공간: 스택용 O(N)

관련 기사: C/C++에서 문자열을 뒤집는 다양한 방법

이 기사는 기고자: 씨. 소메시 아와스티 .