Java 反转用户给定字符串中的每个单词,而不改变其位置

Java 反转用户给定字符串中的每个单词,而不改变其位置,java,string,reverse,Java,String,Reverse,我需要一点帮助。我发现了一个类似于的问题:“编写一个Java程序,它将反转用户给定字符串中的每个单词,而不改变它们的位置,也不使用任何内置函数。” 我解出了一个代码来颠倒整个句子,但我不知道怎么解这个。请帮帮我 import java.io.*; class test25 { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReade

我需要一点帮助。我发现了一个类似于的问题:“编写一个Java程序,它将反转用户给定字符串中的每个单词,而不改变它们的位置,也不使用任何内置函数。”

我解出了一个代码来颠倒整个句子,但我不知道怎么解这个。请帮帮我

import java.io.*;
class test25 { 
    public static void main(String args[]) throws IOException { 
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter string: ");
        String s = br.readLine();
        String reverse = "";
        int length = s.length();

        for (int i = length - 1; i >= 0; i--)
            reverse = reverse + s.charAt(i);
        System.out.println("Result:" + reverse); 
    } 
}
1) 拆分句子(使用Split(),这将返回一个数组,比如单词[])

2) 反转数组单词[]中的每个单词

3) 从数组单词[]中重建句子。

这里有一个解决方案:

public static String reverseEach(String inputString) {
  String[] parts = inputString.split(" ");
  StringBuilder sb = new StringBuilder();
  for (String p : parts) {
    sb.append(new StringBuffer(p).reverse().toString());
    sb.append(' ');
   }
   return sb.toString();
}
String str=“hello world”;
字符串revStr=reverseWordByWord(str);
公共字符串reverseWordByWord(字符串str){
int strLeng=str.length()-1;
字符串反向=”,临时=”;
对于(int i=0;i=0;j--){
反向+=温度特性(j);
如果((j==0)&(i!=strLeng))
反向+=”;
}
温度=”;
}
}
反向返回;
}
输入:hello world


输出:olleh dlrow

下面是实现@Maximin答案的简单代码

public class Reverse {
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine();
        String[] words = input.split(" ");
        String reverse = "";
        for (int i = 0; i < words.length; i++) {
            for (int j = words[i].length() - 1; j >= 0; j--) {
                reverse += words[i].charAt(j);
            }
            System.out.print(reverse + " ");
            reverse = "";
        }
    }
}
公共类反向{
公共静态void main(字符串args[])引发IOException{
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
字符串输入=br.readLine();
String[]words=input.split(“”);
字符串反向=”;
for(int i=0;i=0;j--){
反向+=字[i].字符(j);
}
系统输出打印(反转+“”);
反向=”;
}
}
}
通过声明
String[]reverse=newstring[words.length],还可以将反转的字符串放入它们自己的数组中,允许您根据需要重建句子或格式化输出。

类程序 { 静态void Main(字符串[]参数) { int i=0,j=0; 字符串测试=“你好,先生,我很好”; StringBuilder sb=新的StringBuilder(); char[]str=test.ToCharArray(); char[]revstr; 而(i=j;) {

            if (str[k] == ' ')
            {
                for (int l = k; l < i; l++)
                {   

                    sb.Append(str[l+1]);

                }
                sb.Append(" ");
                i = k - 1;  
            }
            k--;

        }
        for (j = 0; j <= i; j++)
            sb.Append(str[j]);
        Console.WriteLine(sb);

        Console.ReadLine();
if(str[k]='')
{
对于(int l=k;l对于(j=0;j非常简单的代码在这里

class reverse{
    public static StringBuilder sb;    
    public static void main(String args[])
    {        
       String str[] = "He is the one".split(" ");        
       String finalStr="";            
       for(int i = str.length-1; i>= 0 ;i--)    
       {                
            finalStr += str[i]+" ";
            finalStr.toString();

            sb=new StringBuilder(finalStr);
            sb.reverse();              
      }         
       System.out.print(sb);
    }
}

我也遇到了一个类似的问题,但没有回答清楚,因为我的方法对于评估我答案的人来说太复杂了,我在这里分享,希望它能帮助别人

package interviewPractice;
import java.util.Scanner;

public class SentenceToWord 
{
    public static int getNumberOfWords(String sentence)
    {
        int counter=0;
        for(int i=0;i<sentence.length();i++)
        {
            if(sentence.charAt(i)==' ')
            counter++;
        }
        return counter+1;
    }

    public static char[] getSubString(String sentence,int start,int end) //method to give substring, replacement of String.substring() 
    {
        int counter=0;
        char charArrayToReturn[]=new char[end-start];
        for(int i=start;i<end;i++)
        {
            charArrayToReturn[counter++]=sentence.charAt(i);
        }
        return charArrayToReturn;
    }

    public static char[][] getWordsFromString(String sentence)
    {
        int wordsCounter=0;
        int spaceIndex=0;
        int length=sentence.length();
        char wordsArray[][]=new char[getNumberOfWords(sentence)][]; 
        for(int i=0;i<length;i++)
        {
            if(sentence.charAt(i)==' ' || i+1==length)
            {
            wordsArray[wordsCounter++]=getSubString(sentence, spaceIndex,i+1); //get each word as substring
            spaceIndex=i+1; //increment space index
            }
        }
        return  wordsArray; //return the 2 dimensional char array
    }


    public static void main(String[] args) 
    {
    System.out.println("Please enter the String");
    Scanner input=new Scanner(System.in);
    String userInput=input.nextLine().trim();
    int numOfWords=getNumberOfWords(userInput);
    char words[][]=new char[numOfWords+1][];
    words=getWordsFromString(userInput);
    System.out.println("Total number of words found in the String is "+(numOfWords));
    for(int i=0;i<numOfWords;i++)
    {
        System.out.println(" ");
        for(int j=0;j<words[i].length;j++)
        {
        System.out.print(words[i][j]);//print out each char one by one
        }
    }
    }

}
package面试实践;
导入java.util.Scanner;
公共类句子
{
公共静态int getNumberOfWords(字符串语句)
{
int计数器=0;
对于(inti=0;i,这里有一个解决方案

fucntion String reverseSentence(String sentence){
String Rword = "";
String newSentence = "";
char space = ' ';
String empty = "";

if(sentence == null || sentence == empty)
return null; // this could be an error message
else{
      int tempi = 0;
         if(sentence.charAt(0) == space){ 
              Rword = Rword+sentence.charAt(0); // check for when the first char is a space
              tempi++;
         }
        for(int i=tempi; i< sentence.length(); i++){
             if(sentence.charAt(i) == space) //if it reaches a space its a word
             {
                Rword = Rword+sentence.charAt(i);  //add the current space
                newSentence = newSentence+Rword ; //give the reversed word to the new sentence
                Rword = ""; // then empty the word
             }else{
                    Rword = sentence.charAt(i)+Rword ; //while its not a space, reverse.  
                  }
        }
          newSentence = newSentence+Rword; // the last char might not be a space to so the first 
                                           //  if statement in the loop will never happen again, 
                                             //i add the last word after the loop
          return newSentence;
    }
}
功能字符串反转内容(字符串句子){
字符串Rword=“”;
字符串newSentence=“”;
字符空间=“”;
字符串为空=”;
如果(句子==空| |句子==空)
return null;//这可能是一条错误消息
否则{
int-tempi=0;
如果(句子.charAt(0)=空格){
Rword=Rword+句子.charAt(0);//检查第一个字符何时为空格
tempi++;
}
for(int i=tempi;i<句子长度();i++){
if(句子.字符(i)=空格)//如果它到达一个空格,它就是一个单词
{
Rword=Rword+句子.charAt(i);//添加当前空格
newSentence=newSentence+Rword;//将相反的单词赋给新句子
Rword=”“;//然后清空单词
}否则{
Rword=句子。charAt(i)+Rword;//如果不是空格,则相反。
}
}
newSentence=newSentence+Rword;//最后一个字符可能不是第一个字符的空格
//如果循环中的语句再也不会发生,
//我在循环后添加最后一个单词
返回新闻事件;
}
}

使用空格拆分字符串,然后循环遍历字符串数组的每个元素并将其反转:

公共类字符串反转{

            if (str[k] == ' ')
            {
                for (int l = k; l < i; l++)
                {   

                    sb.Append(str[l+1]);

                }
                sb.Append(" ");
                i = k - 1;  
            }
            k--;

        }
        for (j = 0; j <= i; j++)
            sb.Append(str[j]);
        Console.WriteLine(sb);

        Console.ReadLine();
public static void main(String args[])
{
String eString=" \"This is the one\"";
String double_quoteString[]=eString.split("\"");
eString=double_quoteString[1];
String[] splitStrings=eString.split("\\s+");
String reverse="";
for(int i=0;i<splitStrings.length;i++)
{
    if(i!=0)
    reverse+=" ";

    for(int j=splitStrings[i].length()-1;j>=0;j--)
    {
        reverse+=splitStrings[i].charAt(j);
    }
}

reverse="\""+reverse+"\"";
System.out.println("reverse is "+reverse);
}
publicstaticvoidmain(字符串参数[])
{
字符串eString=“\”这是一个\”;
字符串双引号字符串[]=字符串拆分(“\”);
eString=双倍“eString[1];
String[]splitStrings=eString.split(\\s+);
字符串反向=”;
对于(int i=0;i=0;j--)
{
reverse+=splitStrings[i].charAt(j);
}
}
反向=“\”+反向+“\”;
System.out.println(“反向为”+反向);
}
}


我也试过这个。因为我正在学习java,所以我用简单的方式尝试了这个代码。如果我在代码或逻辑上有任何错误,请纠正我。谢谢……;

一个不同的解决方案和一个简单的解决方案

public class strrev {
    public static void main(String[] args)throws IOException {
        // TODO Auto-generated method stub
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter the string to be reversed");
        String str=br.readLine();
        char rev;
        int k=0;        
        for(int i=0;i<str.length();i++)
        {           
            if(str.charAt(i)==32 ||i==str.length()-1)
            {
                for(int j=i;j>=k;j--)
                {
                    rev=str.charAt(j);
                    System.out.print(rev);
                }
                k=i;
                continue;
            }             
        }
    }
}
公共类strev{
公共静态void main(字符串[]args)引发IOException{
//TODO自动生成的方法存根
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
System.out.println(“输入要反转的字符串”);
字符串str=br.readLine();
char rev;
int k=0;
对于(int i=0;i=k;j--)
{
rev=str.charAt(j);
系统输出打印(修订版);
}
k=i;
继续;
}             
}
}
}
简单解决方案: 首先,我们通过扫描仪输入一个字符串 然后我们用空格分开。 然后我们使用for循环将其反转并输出

     public class reverse{

             public static void main(String[] args){

                 Scanner sc = new Scanner(System.in);

                 System.out.println("enter string");

                    String s = sc.nextLine();

                    String [] words = s.split(" "); // space for words

                    for(int i = words.length - 1; i >= 0; i--)
                 {

                    System.out.print(words[i] + " ");

                 }
            }
}
反向串

     import java.util.*;

     public class Main
   {
        public static void main(String[] args)
     {
         String m="java is           great";
          String temp="";
          System.out.println(m);
          String store="";
           int cnt=0;
       char [] p=m.toCharArray();
      for(int i=p.length-1;i>=0;i--)
       {
       if(p[i]==' '||i==0)
            {
        if(cnt>=1||i==0)
        {
            if(i==0)
                temp=temp+p[i];
            store=store+new StringBuilder(temp).reverse().toString();
            temp="";
            cnt=0;
        }
        if(p[i]==' ')
        {
          store=store+p[i];
        }


    }
    else
    {
        temp=temp+p[i];
        System.out.println(p[i]);
        cnt++;
    }
       }
     System.out.println(store);
   }
 }
Output.great是java

公共统计
public static void main(String[] args) {
    String s;
    s="hi Mister geek is here";//input string 
    int j=0;//for tracking each word
    for(int i=0;i<s.length();i++)//loop for the string 
    {     
        if((int)s.charAt(i)==32/*if has  space checked by ascii code of the space */||i==s.length()-1/* for the end of string */)
        {
            for(int u=i;u>=j;u--)// loop for each word
                System.out.print(s.charAt(u));

            j=i; 
        }
    }  
}
public static void main(String[] args) {
    String s;
    s="hi Mister geek is here";//input string 
    int j=0;//for tracking each word
    for(int i=0;i<s.length();i++)//loop for the string 
    {     
        if((int)s.charAt(i)==32/*if has  space checked by ascii code of the space */||i==s.length()-1/* for the end of string */)
        {
            for(int u=i;u>=j;u--)// loop for each word
                System.out.print(s.charAt(u));

            j=i; 
        }
    }  
}
class p3`
//Reverse each word of user given string without altering their position
{
public static String reverseWord(String word)
{
    String r="";
    int len=word.length();
    for(int i=0;i<len;i++)
    {
    r=word.charAt(i)+r; 
    }
    return r;   
}
public static void main(String args[])throws IOException
{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter string: ");
        String s = br.readLine()+' ';
        String rev="",s1="";
    int l=s.length();

    for(int i=0;i<l;i++)
    {
        if (s.charAt(i)!=' ')
        {
        rev=rev+s.charAt(i);

        }
        else
        {
        rev=reverseWord(rev);
        s1=s1+rev+" ";
        rev="";
        }   
    }


    System.out.println(s1);
}}
public class ReverseWordByword {
    private String sentence="My java virtual world";
    private String newReverse;

    public ReverseWordByword() {
        newReverse="";

    }
    public static void main(String[] args) {
        new ReverseWordByword().wordReverse();
    }
    public void wordReverse(){
        String arr[]=sentence.split("\\ ");

        for(int i=0;i<arr.length;i++){
            newReverse=newReverse+reverseLogic(arr[i])+" ";
        }
        System.out.println(newReverse);
    }
    public String reverseLogic(String word){
        String localWord="";
        char[] charArr=word.toCharArray();
        for(int i=word.length()-1;i>=0;i--){
            localWord=localWord+charArr[i];
        }

        return localWord;
    }
}
public class ReverseWord {

public static void main(String[] args) {
    String s = "My name is Sarthak ";
    StringBuffer sb = new StringBuffer();
    int n = s.length();
    int j =n;
    int i;
    for(i = n-1;i>=0;i--){

        if(s.charAt(i) == ' '){
            sb.append(s.substring(i+1, j));
            sb.append(" ");
            j = i;
        }
    }
    sb.append(s.substring(0,j));
    System.out.println(sb);
}
}
public static String reverseWordWise(String input) {

    String[] words = input.split(" ");
    String reversestr = "";

    for(int i = words.length-1; i >= 0; i--){
        if(i == words.length-1){
            reversestr = reversestr + words[i];
        }else{
            reversestr = reversestr + " " + words[i];
        }
    }//end of for loop

    return reversestr;
}
public class ReverseEachWord {

    static void reverseEachWordOfString(String inputString)
    {
        String[] words = inputString.split(" ");

        String reverseString = "";

        for (int i = 0; i < words.length; i++) 
        {
            String word = words[i];

            String reverseWord = "";

            for (int j = word.length()-1; j >= 0; j--) 
            {
                reverseWord = reverseWord + word.charAt(j);
            }

            reverseString = reverseString + reverseWord + " ";
        }

        System.out.println(inputString);

        System.out.println(reverseString);

        System.out.println("-------------------------");
    }

    public static void main(String[] args) 
    {

        reverseEachWordOfString("");

        reverseEachWordOfString("");

        reverseEachWordOfString("");

        reverseEachWordOfString("");
    }

}
public String reverseString(String s) {
    String res = "";
    String reverseFirstPart = "";
    String reverseLastPart = "";

        for (int i=0; i < s.length(); i++){
            if (s.substring(i,i+1).equals(" ") ){
                String firstPart = s.substring(0,i);
                String lastPart = s.substring(i+1,s.length());
                reverseFirstPart = new StringBuilder(firstPart).reverse().toString();
                reverseLastPart = new StringBuilder(lastPart).reverse().toString();
                res = reverseFirstPart + " " + reverseLastPart;
            } else {
                res = s.substring(i,i+1)+res;
                }
    }  return res.substring(reverseLastPart.length());
}
public static void main(String[] args) {
    String s = "hello dear";
    String su= "";
    //split the words
    String words [] =s.split(" ");
    //iterate each word and reverse using sb.reverse
    //and append in the string with " "
    for (String w:words) {
        StringBuilder sb = new StringBuilder(w);
        sb.reverse();
        su += sb.toString()+" ";
    }
    System.out.println(su.trim());
    //prints "olleh raed"
}
public class Main {
    public static void main(String[] args) {
        String[] s = new Scanner(System.in).nextLine().split(" ");
        for ( String rs : s) {
            System.out.print(new StringBuilder(rs).reverse()+" ");
        }
    }
}
public class ReverseSent {
    public String Reverse(String s) {
        String s1="",s2="",s3="";
        int l = s.length();
        for(int i=1;i<=l;i++) {
            if(s.charAt(l-i)==' '||(l-i)==0) {
                for(int j=1;j<=s2.length();j++) {
                    s1=s1+s2.charAt(s2.length()-j);
                }
                s3=s3+s1+" ";
                s1="";
                s2="";
            }else if((l-i)==1){
                s2=s2+s.charAt(l-i)+s.charAt(0);
            }else {
                s2=s2+s.charAt(l-i);
            }
        }
        return s3;
    }

    public static void main(String[] args) {
        ReverseSent rs = new ReverseSent();
        String s = "Hello   i am ashish";
        System.out.println(rs.Reverse(s));

    }

}
package com.learning.misc;

public class WordReversal {

public static void main(String[] args) {

    String str = "functional Interface is core concept of Lambda";

    char arr[] = str.toCharArray();

    int temp = 0;
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] == ' ' || i == arr.length-1) {
            for (int j = i; j >= temp; j--) {
                System.out.print(arr[j]);
            }
            temp = i+1;
            System.out.print(" ");
        }

    }
}

}
public static void main(String arg[])
{
    String reversedString = "";
    String givenString = "My name is vishal kumar";
    givenString = " " + givenString;
    while(givenString.contains(" "))
    {
    reversedString += (givenString.substring(givenString.lastIndexOf(" "), givenString.length()));
    givenString = givenString.substring(0, givenString.lastIndexOf(" "));
}
    System.out.println(reversedString.trim());
}