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

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

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

Ответы [ 30 ]

1 голос
/ 14 марта 2010

Вот метод, который берет строку и переворачивает ее.

public String reverse ( String s ) {
            int length = s.length(), last = length - 1;
            char[] chars = s.toCharArray();
            for ( int i = 0; i < length/2; i++ ) {
                char c = chars[i];
                chars[i] = chars[last - i];
                chars[last - i] = c;
            }
            return new String(chars);
        }

Сначала вам нужно разбить строку на слова вроде этого

String sample = "hello world";  
String[] words = sample.split(" ");  
0 голосов
/ 01 декабря 2013
 package MujeebWorkspace.helps;
 // javamujeeb@gmail.com

 public class Mujeeb {

     static String str= "This code is simple to reverse the word without changing positions";
     static String[] reverse = str.split(" ");

     public static void main(String [] args){  
         reverseMethod();
     }

     public static void reverseMethod(){
         for (int k=0; k<=reverse.length-1; k++) {
             String word =reverse[reverse.length-(reverse.length-k)];
             String subword = (word+" ");
             String [] splitsubword = subword.split("");

             for (int i=subword.length(); i>0; i--){
                 System.out.print(splitsubword[i]);  
             }
         }
     }
 }
0 голосов
/ 14 марта 2010
public static void main(String[] args) {
        System.out.println(eatWord(new StringBuilder("Hello World This Is Tony's Code"), new StringBuilder(), new StringBuilder()));
    }
static StringBuilder eatWord(StringBuilder feed, StringBuilder swallowed, StringBuilder digested) {
    for (int i = 0, size = feed.length(); i <= size; i++) {
        if (feed.indexOf(" ") == 0 || feed.length() == 0) {
            digested.append(swallowed + " ");
            swallowed = new StringBuilder();
        } else {
            swallowed.insert(0, feed.charAt(0));
        }
        feed = (feed.length() > 0)  ? feed.delete(0, 1) : feed ;
    }
    return digested;
}

пробег:

olleH dlroW sihT sI s'ynoT edoC 
BUILD SUCCESSFUL (total time: 0 seconds)
0 голосов
/ 04 сентября 2013

Надеюсь, это кому-нибудь пригодится.

public class ReverseString {

public static void main(String[] args) {
    String a="abrakadabra";
    String b=reverse(a);
    System.out.print(b);
}
    public static String reverse(String b){
        String j="";
        int a=b.length();           
        for (int x=a;x>0;x--){          
        j=j+b.substring(x-1,x);}

        return j;
    }
}
0 голосов
/ 16 августа 2013
class ReverseWordsInString{
    public static String reverse(String s1){
            int l = s1.length();
            if (l>1)
                    return(s1.substring(l-1) + reverse(s1.substring(0,l-1)));
            else
                    return(s1.substring(0));
    }
    public static void main(String[] args){
            String st = "Hello My World!";
            String r = "";
            for (String word : st.split(" "))
                    r += " "+ reverse(word);
            System.out.println("Reversed words in the given string: "+r.trim());
    }
}
0 голосов
/ 13 июля 2016

Я знаю, это старый пост, но подумал написать ответ, если это кому-нибудь поможет. Пожалуйста, используйте приведенный ниже код для правильного решения.

public static void main(String[] args) {
    // TODO Auto-generated method stub

    String string1 = "Hello how are you";

    String[] string2 = string1.split(" ");
    String result ="";

    for(int i=0;i<string2.length;i++)
    {
        StringBuilder stringBuilder = new StringBuilder(string2[i]);

        result = (i==0)?(result+ stringBuilder.reverse().toString()):(result +" "+stringBuilder.reverse().toString());
    }

    System.out.println("Result line:"+result);
}

Текст, отображаемый в консоли: Строка результата: olleH woh эпоха uoy

0 голосов
/ 17 июня 2015

Обратное копирование строки по блокам, а затем конкатенация пробелов. например "Привет, мир Java".

1st block = "hello", скопируйте его: - "olleh" и добавьте пробел, затем
2-й блок = "Java" и т. Д.

public static void main(String args[]) {
    String s, rev = "";
    Scanner in = new Scanner(System.in);

    System.out.println("Enter a string to reverse");
    s = in.nextLine();

    int length = s.length();
    // char[] cs=s.toCharArray();
    int l, r;
    int i = 0;
    while (i < length) {
        l = i; // starting index
        // find length of sub-block to reverse copy
        while (i < length && s.charAt(i) != ' ') { 
            i++;
        }
        r = i - 1; // ending index
        for (int j = r; j >= l; j--) { // copy reverse of sub-block
            rev = rev + s.charAt(j);
        }
        rev = rev + " "; // add the whitespace
        i++;
    }

    System.out.println("Reverse of entered string is: " + rev);
}

Программа также работает для нескольких пробелов между словами.

0 голосов
/ 12 февраля 2014
        String input = "Welcome To The Java Programming";
        String output  = "";
        String[] cutAry = input.split("\\s+");
        StringBuilder sb = new StringBuilder();
        for(String s:cutAry){
            sb.append(s);
            output += sb.reverse().toString()+" ";
            sb.replace(0, sb.length(), "");
        }
        System.out.println(output);
0 голосов
/ 10 мая 2012

Используя split (), вам просто нужно изменить то, на что вы хотите разделить.

public static String reverseString(String str)
{
    String[] rstr;
    String result = "";
    int count = 0;
    rstr = str.split(" ");
    String words[] = new String[rstr.length];
    for(int i = rstr.length-1; i >= 0; i--)
    {
        words[count] = rstr[i];
        count++;
    }

    for(int j = 0; j <= words.length-1; j++)
    {
        result += words[j] + " ";
    }

    return result;


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

если перевернуть каждую букву, то цикл отлично работает:

for(int i = 0; i < input.length(); i++){
    output = output + input.substring((input.length()-i)-1, input.length()-i);
}
...