Инвертировать каждое отдельное слово строки «Hello World» с помощью Java - PullRequest
38 голосов
/ 14 марта 2010

Я хочу изменить каждое отдельное слово строки в Java (не всю строку, только каждое отдельное слово).

Пример: если входной строкой является «Hello World», то выходной должен быть «olleH dlroW».

Ответы [ 30 ]

0 голосов
/ 12 декабря 2013

Использование функции split () и обратное преобразование отдельных слов

    public String reverseSentence(String input)
      {
        String[] words = input.split(" ");
        StringBuilder builder = new StringBuilder();
        for (String s : words)
        {
            String rev = " ";
            for (int i = 0; i < s.length(); i++)
            {
                rev = s.charAt(i) + rev;
            }

            builder.append(rev);
        }

        return builder.toString().trim();
      }

Удалите лишнее пространство, добавленное в конце новой строки, используя trim ()

Выход:

    This is my sentence        
    sihT si ym ecnetnes        
0 голосов
/ 06 марта 2013
String someString = new String("Love thy neighbor");
    System.out.println(someString);
    char[] someChar = someString.toCharArray();
    int j = someChar.length - 1;
    char temp;
    for (int i = 0; i <= someChar.length / 2; i++) {
        temp = someChar[i];
        someChar[i] = someChar[j];
        someChar[j] = temp;
        j--;
    }
    someString = new String(someChar);
    System.out.println(someString);

Пробег:

Love thy neighbor
robhgien yht evoL
0 голосов
/ 16 декабря 2013
public String reverse(String arg) {
    char[] s = arg.toCharArray();
    StringBuilder sb = new StringBuilder();
    boolean reverse = false;
    boolean isChar = false;
    int insertPos = 0;

    for (int i = 0; i < s.length; i++) {
        isChar = Character.isAlphabetic(s[i]);
        if (!reverse && isChar) {
            sb.append(s[i]);
            insertPos = i;
            reverse = true;
        } else if (reverse && isChar) {
            sb.insert(insertPos, s[i]);
        } else if (!reverse && !isChar) {
            sb.append(s[i]);
        } else if (reverse && !isChar) {
            reverse = false;
            sb.append(s[i]);
        }
    }

    return sb.toString();
}
0 голосов
/ 08 марта 2013
    String input = "Hello World!";

    String temp = "";
    String result = "";

    for (int i = 0; i <= input.length(); i++) {
        if (i != input.length() && input.charAt(i) != ' ') {
            temp = input.charAt(i) + temp;
        } else {
            result = temp + " " + result;
            temp = "";
        }
    }

    System.out.println("the result is: " + result);
0 голосов
/ 13 августа 2014
with and without api.

public class Reversal {
    public static void main(String s[]){
        String str= "hello world";
        reversal(str);
    }

    static void reversal(String str){
        String s[]=str.split(" ");
        StringBuilder noapi=new StringBuilder();
        StringBuilder api=new StringBuilder();
        for(String r:s){
            noapi.append(reversenoapi(r));
            api.append(reverseapi(r));
        }
        System.out.println(noapi.toString());
        System.out.println(api.toString());
    }

    static String reverseapi(String str){
        StringBuilder sb=new StringBuilder();
        sb.append(new StringBuilder(str).reverse().toString());
        sb.append(' ');
        return sb.toString();

    }

    static String reversenoapi(String str){
        StringBuilder sb=new StringBuilder();
        for(int i=str.length()-1;i>=0;i--){
            sb.append(str.charAt(i));
        }
        sb.append(" ");
        return sb.toString();
    }
}
0 голосов
/ 21 июня 2013

Один из самых простых способов:

public String reverse(String post)
{       
    String backward = "";
    for(int i = post.length()-1; i >= 0; i--) {
        backward = backward + post.substring(i, i+1);
    }        
    return backward;
} 
0 голосов
/ 27 декабря 2015

Некоторые из вышеуказанных решений имеют более высокую сложность во время выполнения. С помощью приведенного ниже алгоритма это может быть достигнуто за время O (n).

Алгоритм:

  1. Разбор строки с конца до начала.
  2. Каждый раз, когда встречается символ пробела, т. Е. "", Поместите список символов, проанализированных до этого момента, в ArrayList, который может динамически расти.
  3. Распечатайте ArrayList в обратном порядке, что даст вам желаемый результат.

Сложность: O (n), где n - длина строки.

import java.io.IOException;
import java.util.ArrayList;

public class WordReverse {

    public static void main(String[] args) throws IOException {

        String inputStr = "Hello World";
        String reversed = "";
        ArrayList<String> alist = new ArrayList<String>();

        for (int i = inputStr.length() - 1; i >= 0; i--) {
            if (inputStr.charAt(i) != ' ') {
                reversed = reversed + inputStr.charAt(i);
            } else {
                alist.add(reversed);
                reversed = "";
            }
        }
        alist.add(reversed);
        String result = "";

        for (int i = alist.size() - 1; i >= 0; i--) {
            result = result + alist.get(i);
            result = result + " ";
        }
        System.out.println(result);
    }
}
0 голосов
/ 04 июля 2013

Это переворачивает слова в данной строке. Предполагается, что слова разделены одним пробелом. Реверс выполняется на месте (в символьном буфере).

public static String reversePhrases(String s)
{
    char[] buf = s.toCharArray();
    int len = buf.length;
    int start = 0;
    for (int i = 0; i < len; i++) {
        if (buf[i] == ' ' || i == (len-1)) {
            if (i == (len-1)) {
                i = len;
            }
            int end = (start + i)/2;
            for (int j = start; j < end; j++) {
                char c = buf[j];
                int pos = (start + i) - j - 1;
                buf[j] = buf[pos];
                buf[pos] = c;
            }
            start = i + 1;    
        }
    }
    return new String(buf);
}
0 голосов
/ 21 апреля 2017

Это моя версия с теми же номерами. Надеюсь, вам понравится, ребята!

public String reverseWords(String text){
        StringBuilder out = new StringBuilder();
        for(String word : text.split(" ")){
            out.append(new StringBuilder(word).reverse().toString());
            out.append(" ");
        }
        return out.toString().substring(0, out.length() - 1);
}
0 голосов
/ 29 июля 2013

Простой способ:

String reverseString(String string)
{
    String newString = "";
    for(int x = string.length() - 1; x > -1; x ++)
        newString += string.charAt(x);
    return newString;
}
...