【问题标题】:Reverse each word in a string in Java在Java中反转字符串中的每个单词
【发布时间】:2021-04-28 18:51:34
【问题描述】:

我试图创建一个方法来反转字符串数组并返回一个字符串数组,其中所有单词都以相反的顺序排列。但是我的代码不起作用。

public static String[] reverse(String input) {
    String[] reversed = new String[input.length()];

    for (int i = 0; i < input.length(); i++){
        StringBuilder sb = new StringBuilder(input[i]);
        reversed[i] = sb.reverse().toString();
    }
    return reversed;
}

StringBuilder 行中的输入显示错误“预期的数组类型;找到:'java.lang.String'。我无法弄清楚。

预期结果显示如下:

String[] reversed = StringReverser.reverse("grey fox jumps over dog");

assertArrayEquals(new String[] {
            "dog","over", "jumps", "fox", "grey"}, reversed);

【问题讨论】:

  • 您在这里搜索过吗?这个问题至少每隔几周就会出现一次。
  • 这能回答你的问题吗? Reverse a given sentence in Java 。我不想显得粗鲁,但同时必须说,您必须认为从 1995 年开始存在的 OOP 语言到现在必须能够解决如此简单的问题。下次在引擎中搜索时,请尝试加倍努力。事实上,这是我最近对微软进行虚拟采访时提出的问题之一,所以我知道这是一个常见的问题。

标签: java arrays string stringbuilder


【解决方案1】:

你的代码有两个问题:

  1. 您已将input[i] 传递给new StringBuilder(...),而input 不是数组。
  2. 您根本没有按字反转字符串。可以有很多方法来做到这一点。最简单的方法是将字符串拆分为空格,然后以相反的顺序将它们存储在数组中。

演示:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        System.out.println(Arrays.toString(reverse("grey fox jumps over dog")));
    }

    public static String[] reverse(String input) {
        String[] words = input.split("\\s+");
        String[] reversed = new String[words.length];

        for (int i = 0; i < words.length; i++) {
            reversed[words.length - i - 1] = words[i];
        }
        return reversed;
    }
}

输出:

[dog, over, jumps, fox, grey]

【讨论】:

    【解决方案2】:

    你的代码有两个问题:

    1. 您已将input[i] 传递给new StringBuilder(...),而input 不是数组。
    2. 您根本没有按字反转字符串。可以有很多方法来做到这一点。最简单的方法是将字符串拆分为空格,然后以相反的顺序将它们存储在数组中。
    public static String[] reverse(String input) {
        String[] words = input.split("\\s+");
    
        for (int i = 0, j = words.length - 1; i < j; i++, j--)
            swap(words, i, j);
    
        return words;
    }
    
    private static void swap(String[] arr, int i, int j) {
        String tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }
    

    演示:

    String[] res = reverse("grey fox jumps over dog");
    System.out.println(Arrays.toString(res));   // [dog, over, jumps, fox, grey]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      相关资源
      最近更新 更多