Обратная строка в Java - PullRequest
       95

Обратная строка в Java

422 голосов
/ 27 сентября 2011

У меня "Hello World" хранится в строковой переменной с именем hi.

Мне нужно распечатать, но в обратном порядке.

Как я могу это сделать?Я понимаю, что в Java уже встроена какая-то функция, которая делает это.

Related: Обратное преобразование каждого отдельного слова строки «Hello World» с помощью Java

Ответы [ 37 ]

0 голосов
/ 13 мая 2018

Может быть, использование new StringBuilder(str).reverse.toString() достаточно удобно и эффективно. Но если вы хотите сделать это сами, попробуйте это:

public static String reverse(String str) {
    StringBuilder sb = new StringBuilder(str.length());
    for (int i = str.length() - 1; i >= 0; i--) {
        sb.append(str.charAt(i));
    }
    return sb.toString();
}

Некоторые ответы используют str.toCharArray() для получения массива char этой строки, это приведет к выделению новой памяти для хранения этих символов, что неэффективно.

StringBuffer потокобезопасен, а StringBuilder - нет. Так что StringBuffer менее эффективен, чем StringBuilder. Если нет необходимости, лучше использовать StringBuilder.

0 голосов
/ 16 апреля 2018

Существует множество способов перевернуть строку.

1.Преобразование строки в байты: метод getBytes () используется для преобразования входной строки в байты [].

import java.lang.*;
import java.io.*;
import java.util.*;
class ReverseString{
public static void main(String[] args)
{
    String input = "GeeksforGeeks";
    byte [] strAsByteArray = input.getBytes();
    byte [] result =  new byte [strAsByteArray.length];

    for (int i = 0; i<strAsByteArray.length; i++)
        result[i] = 
         strAsByteArray[strAsByteArray.length-i-1];

    System.out.println(new String(result));
}
}

2. Преобразование строки в массив символов: пользователь вводит строку вбыть обращенным вспять,Затем добавьте символы массива в объект ArrayList.Java также имеет встроенный метод reverse () для класса Collections.Поскольку метод reverse () класса Collections принимает объект списка, для обращения к списку мы передадим объект LinkedList, который является типом списка символов.

import java.lang.*;
import java.io.*;
import java.util.*;

 class ReverseString{

public static void main(String[] args)
{
    String input = "Geeks For Geeks";
    char[] hello = input.toCharArray();
    List<Character> 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());
}
}
0 голосов
/ 19 сентября 2014
import java.util.Scanner;
public class StringReverseExample
{
    public static void main(String[] args)
    {
        String str,rev;
        Scanner in = new Scanner(System.in);
        System.out.print("Enter the string : ");
        str = in.nextLine();
        rev = new StringBuffer(str).reverse().toString();
        System.out.println("\nString before reverse:"+str);
        System.out.println("String after reverse:"+rev);
    }
}
/* Output : 
Enter the string : satyam

String before reverse:satyam
String after reverse:maytas */
0 голосов
/ 18 декабря 2014
import java.util.Scanner;

public class Test {

    public static void main(String[] args){
        Scanner input = new Scanner (System.in);
        String word = input.next();
        String reverse = "";
        for(int i=word.length()-1; i>=0; i--)
            reverse += word.charAt(i);
        System.out.println(reverse);        
    }
}

Если вы хотите использовать простой цикл for!

0 голосов
/ 18 декабря 2014
package logicprogram;
import java.io.*;

public class Strinrevers {
public static void main(String args[])throws IOException
{
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    System.out.println("enter data");
    String data=br.readLine();
    System.out.println(data);
    String str="";
    char cha[]=data.toCharArray();

    int l=data.length();
    int k=l-1;
    System.out.println(l);


    for(int i=0;k>=i;k--)
    {

        str+=cha[k];


    }
    //String text=String.valueOf(ch);
    System.out.println(str);

}

}
0 голосов
/ 13 января 2015

Получает введенное вами значение и возвращает его в обратном порядке;)

public static  String reverse (String a){
    char[] rarray = a.toCharArray();
    String finalvalue = "";
    for (int i = 0; i < rarray.length; i++)
    {
        finalvalue += rarray[rarray.length - 1 - i];
    }   
return finalvalue;

}

0 голосов
/ 05 февраля 2016
StringBuilder s = new StringBuilder("racecar");
    for (int i = 0, j = s.length() - 1; i < (s.length()/2); i++, j--) {
        char temp = s.charAt(i);
        s.setCharAt(i, s.charAt(j));
        s.setCharAt(j, temp);
    }

    System.out.println(s.toString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...