繁体   English   中英

Java-使用堆栈的反向句子

[英]Java - reverse sentences using Stacks

我正在尝试创建一种方法,该方法接受一个字符串作为输入,并返回另一个字符串,该字符串使用Stacks颠倒输入中每个句子的顺序。 例如,如果用户输入“嗨,我喜欢红色”。 输出的字符串应为“ hi。red like i。”。 我创建的以下程序仅适用于一个句子。 我如何修改该方法以识别周期,然后重新开始该方法? 当前,如果我输入“ hi there”,则输出为“ there hi”,这很好。 但是,如果我输入“ hi。i like red。”,则输出为“ red。like i there.hi”。 如何修改reverseSentence方法以识别句点并重新开始下一个句子? 任何建议或提示将非常有帮助。

//Reverses the order of words inside of sentences.

import java.util.*;
import java.util.regex.*;

public class reverse {

  //reverses the string using a stack
  private static String reverseSentence(String inputString) {

     String[] arrString = inputString.trim().split(Pattern.quote(" "));
     Stack stack = new Stack();

     for(String word : arrString) 
     {
       stack.push(word);
     }
    StringBuilder builder = new StringBuilder();
    while( !stack.isEmpty()) 
    {
      builder.append(stack.pop()).append(" ");
    }
    return builder.toString();
  }

  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    Stack<String> stack = new Stack<String>();

    System.out.printf("Enter a sentence: ");
    String sentence = scanner.nextLine();

    if (sentence == null || sentence.length() == 0) {
      System.out.println("Invalid...");
      return;
    }

    String reverse = reverseSentence(sentence);
    System.out.printf("Reversed string using stack is : %s", reverse);


    while (!stack.isEmpty()) {
      System.out.print(stack.pop() + " ");
    }
  }
}

在空格处分割输入之前,请按句点对其进行修剪,并针对您之前获得的每个句子/分割部分在for循环中在方法中运行逻辑。

在您的主要方法中,而不是调用reverseSentence:

String[] sentences = sentence.trim().split(Pattern.quote("."));
for (String toReverse : sentences) {
                            System.out.print(reverseSentece(toReverse));
} 

我知道这并不完美,但是我希望对我的意思有所了解,因为我在手机上打字。

使用字符串拆分方法。 String[] sentences = sentence.split ("\\\\."); 也许?

我想到两种方法可以实现此目的:

  1. 首先用“。”分隔字符串,为您提供字符串中的句子列表。 将逻辑应用于每个句子。 输出每个反句,以句点分隔。

  2. 使用当前逻辑,但是在将任何单词添加到堆栈之前,请检查单词的最后一个字符是否为句点。 如果是,则表示这是句子的结尾。 弹出堆栈,直到清空并显示内容。 (这将显示反向句子,直到此处)继续下一个单词。

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM