当前位置: 首页 > 知识库问答 >
问题:

在不改变位置的情况下反转字符串中的每个单词(不使用内置功能)

仇正平
2023-03-14

我想在不同的情况下反转Java中字符串的每个单词(不是整个字符串,只是每个单词)。

示例1:如果输入字符串是“这是一个测试”,那么输出应该是“sihT si a tset”。

示例2:如果输入字符串是“This is a test”,则输出应该是“sihT si a tset”。[当某些单词之间有多个空格时]

请同时提供算法以便于理解

到目前为止我都试过了

class reverseAString
    {
        public static void main(String args[])
        {
        String str= "Test the product";
        String strArr[]= str.split(" ");


        for(int i=0;i<=strArr.length-1;i++)
        {
            for(int j=strArr[i].length()-1; j>=0;j--)
            {
                System.out.print(strArr[i].charAt(j));

            }
            System.out.printf(" ");
        }
        }
    }

---------

 public String reverseWordByWord(String str){
        int strLeng = str.length()-1;
        String reverse = "", temp = "";

        for(int i = 0; i <= strLeng; i++){
            temp += str.charAt(i);
            if((str.charAt(i) == ' ') || (i == strLeng)){
                for(int j = temp.length()-1; j >= 0; j--){
                    reverse += temp.charAt(j);
                    if((j == 0) && (i != strLeng))
                        reverse += " ";
                }
            temp = "";
        }
    }
    return reverse;
}

共有3个答案

汝承载
2023-03-14

我已经很久没有接触Java了,但这里是算法。

String stringToReverse = "This is a Test";
String finalString = "";
Stack word = new Stack;
for(int i = 0; i < stringToReverse.length; i++){
    char chr = stringToReverse[i];
    if(chr == " " || i == (stringToReverse.length - 1)){
        while(word.count > 0){
            finalString += word.pop();
        }
         finalString += chr;
    }else{
        word.push(chr);
    }
}
楚昀
2023-03-14
public static void main(String arg[]) {
    System.out.println(reverseWords("This is a test"));
}

// function to reverse each word
public static String reverseWords(String input) {
    String result = null;
    StringBuffer strBuffer = new StringBuffer();
    String split[] = input.split(" ");
    for (String temp : split) {
        if (temp != " ") {
            strBuffer.append(reverse(temp));
            strBuffer.append(" ");
        } else {
            strBuffer.append(" ");
        }
    }

    result = strBuffer.toString();
    return result;
}

// function to reverse individual word
public static String reverse(String input) {
    StringBuffer strBuffer = new StringBuffer();
    char[] charArray = input.toCharArray();
    for (int j = charArray.length - 1; j >= 0; j--) {
        strBuffer.append(charArray[j]);
    }
    return strBuffer.toString();
}
洪飞鸿
2023-03-14

这种方法要简洁得多。

class StringRev{
    public static void main(String args[]){
    String str[] = "Test the product".split(" ");
    String finalStr="";
        for(int i = str.length-1; i>= 0 ;i--){
            finalStr += str[i]+" ";
        }
        System.out.println(finalStr);
    }
}
 类似资料:
  • 问题内容: 我的代码中有一个小问题。我正在尝试反转单词和字符串的字符。例如,“狗跑了”将变成“ ehT神纳尔” 该代码几乎可以正常工作。它只是不添加空格。你会怎么做? 问题答案: 您走在正确的轨道上。主要问题是一个空字符串,而不是一个空格(即使您解决了这个问题,您可能也不想在最后一个单词之后留一个空格)。 这是您可以更简洁地执行此操作的方法:

  • 为什么它抛出一个错误?任何帮助都将不胜感激 编辑:

  • 问题内容: 我要扭转各个人在Java中的String(不是整个字符串,只是每个人的字)的字。 示例:如果输入String为“ Hello World”,则输出应为“ olleH dlroW”。 问题答案: 这应该可以解决问题。这将遍历源字符串中的每个单词,使用StringBuilder的内置方法将其反转,然后输出反转的单词。 输出: 注意:评论者正确地指出了一些我认为应该在此处提及的内容。本示例将

  • 问题内容: 我有一个2的幂的整数输入(1、2、4、8等)。我希望函数不使用log()返回位位置。例如,对于上述输入,对于C#,将分别返回{0,1,2,3}。另外,如果可以在SQL中完成。 谢谢! 问题答案: 我发现执行此操作最快的代码来自Bit Twiddling Hacks网站。具体而言,基于DeBruijn序列的查找。参见http://graphics.stanford.edu/~seande

  • 我想复制这家伙做的但不使用画布。我想有一个div在我的页面的中心,并简单地增加宽度/高度/边界半径10px每秒。这工作得很好,但是由于某种原因,div越大,它向右下方移动的越多。圆圈不是静止不动的,它的中心位置随着它变大而改变。如何在不改变位置的情况下更改div的宽度/高度? main.css index.html APP咖啡

  • 问题内容: 如何在 Java 中反转字符串?你能在不使用任何 Java 内置方法的情况下编写程序吗? 问题答案: 有很多方法可以做到,其中一些是: 使用 for 循环 使用递归 使用字符串缓冲区