【问题标题】:Reversing words in a string (NOT characters) in Java在Java中反转字符串(非字符)中的单词
【发布时间】:2015-11-18 18:18:03
【问题描述】:

我对编码很陌生,我正在尝试解决以下问题:
使用堆栈来反转句子中的单词。继续阅读单词,直到找到一个以句号结尾的单词,然后将它们添加到堆栈中。当您有一个带有句点的单词时,将单词弹出并打印出来。当输入中没有更多单词时停止。例如,你应该打开输入:
玛丽有只小羊羔。它的羊毛像雪一样白。
进入:
小羊羔吃了玛丽。雪白如羊毛。
注意大写和句号的位置。

我正在努力寻找如何反转单词 - 我找到了很多反转字符的示例,但我无法找到任何东西来反转完整的单词。这是我到目前为止所拥有的。我不太明白 String[] words = sentence.split(" ");行,但我发现在很多解决方案中......这是创建一个单词数组,然后我可以推入堆栈吗?

import java.util.Scanner;
import java.util.Stack;

public class Task03 {
public static void main(String[] args) {
    String sentence;
    System.out.println("Enter a sentence: ");
    Scanner input = new Scanner(System.in);
    sentence = input.next();

    printStack(sentence);        
}

private static void printStack(String sentence) {
    Stack<String> stack = new Stack<>();
    String[] sentenceArray = sentence.split(" ");
    String reversed = "";

    for (String words: sentenceArray) {
        stack.push(words);
    }
    while (!stack.isEmpty()){
        reversed += stack.pop();
    }
    System.out.println("Reverse is: " + reversed);
}
}


这个输出只是返回句子中的第一个单词,所以我在 printStack 方法中做错了。我希望我已经添加了足够的内容来向您表明我真的很努力。

【问题讨论】:

  • 这个作业的重点是让你学习如何思考如何使用算法和逻辑处理数据。 我不知道从哪里开始有点意思,你应该自己尝试一些东西来自己形成逻辑。

标签: java stack


【解决方案1】:

我已经硬编码了字符串值。你也可以接受用户的输入

class StringRev{
    public static void main(String args[]){
    String str = "He is the one";
    String temp = "";
    String finalString = "";
        for(int i =str.length()-1;i>=0;i--){
            temp +=i!=0?str.charAt(i):str.charAt(i)+" ";
            if(str.charAt(i) == ' '||i==0){
                for(int j=temp.length()-1;j>=0;j--){
                    finalString += temp.charAt(j);
                }
                temp = "";
            }
        }
            System.out.println(finalString);
    }
}

【讨论】:

  • 这里不使用栈、推、弹出。
猜你喜欢
  • 2015-12-13
  • 1970-01-01
  • 2021-04-28
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-13
相关资源
最近更新 更多