【问题标题】:Given a String, return an array of char values that contains the characters of the string in reverse order [closed]给定一个字符串,返回一个 char 值数组,该数组以相反的顺序包含字符串的字符[关闭]
【发布时间】:2018-11-22 01:38:09
【问题描述】:

从标题中您可以看到我正在尝试做的事情,但是它不起作用,我不知道为什么。谁有任何想法或更简单的方法来执行此方法? (不使用字符串生成器和所有额外的东西)

public char[] reverseStringToArray(String str)
{

   char[] reverseStringToArray  = str.toCharArray();

   char[] characters = new char[reverseStringToArray.length];

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

       characters[i] = reverseStringToArray[i];

   return reverseStringToArray;
}

【问题讨论】:

  • 这里characters[i] = reverseStringToArray[i]; 这些索引应该是不同的。我会让你弄清楚它们应该是什么,但这是非常简单的数学运算。
  • 这个return reverseStringToArray[i];也不应该编译!
  • 附带问题——你为什么使用Character而不是charCharacter[] 数组与 char[] 数组不同。

标签: java arrays string loops char


【解决方案1】:

StringBuilder 有一个有用的方法reverse(),您可以使用它然后转换为char[]。喜欢,

return new StringBuilder(str).reverse().toString().toCharArray();

如果您必须在这里实现自己的数组反转,重要的是要知道不要将元素反转超过中途标记(为什么?因为您将反转它们然后将它们反转回来)。请注意,您还需要执行完全交换,否则您将丢失一半的输入。也就是说,它应该看起来像,

char[] rsa = str.toCharArray();
for (int i = 0; i < rsa.length / 2; i++) {
    char ch = rsa[i];
    rsa[i] = rsa[rsa.length - i - 1];
    rsa[rsa.length - i - 1] = ch;
}
return rsa;

【讨论】:

    猜你喜欢
    • 2019-06-16
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 2017-10-09
    • 1970-01-01
    相关资源
    最近更新 更多