在Java中反转字符串时出错

时间:2012-07-07 05:24:30

标签: java string reversing

我想要反转一个字符串,我知道有成千上万的例子,但是我想自己做这个工作并且我创建了这个,但它没有正常工作。

    public String ReverseString(String str){
        str = str.toLowerCase();

        char normalArr[] = str.toCharArray();
        char reversedArr[] = new char[str.length()];

        for (int i=str.length()-1; i<=0; i--){
            int count = 0;
            reversedArr[count] = normalArr[i];
            count++;
        }

        String retValue = new String(reversedArr);
        return retValue;
    }

3 个答案:

答案 0 :(得分:1)

查看循环的条件 - 它应该是i >= 0
此外 - 您的解决方案分配了一个不必要的数组(有些算法使用单个数组执行此操作,但不是您的) - 我认为您应该努力编写程序以获得良好的性能。

答案 1 :(得分:1)

除了@zaskes的回答,你需要在循环之前int count = 0;,而不是在里面。

答案 2 :(得分:0)

这是一个执行反向逻辑的实现:

StringBuffer reversed = new StringBuffer(str.length());
int loc = str.length();
while (loc > 0) {
  char c1 = str.charAt(--loc);
  if (Character.isLowSurrogate(c1)) {
    assert loc >= 0;
    char c2 = str.charAt(--loc);
    reversed.append(c2);
  }
  reversed.append(c1);
}
return reversed.toString();

如果您考虑使用StringBuffer进行简单附加作弊,则可以将其替换为:

char[] reversed = new char[str.length()];
int next = 0;
...
reversed[next++] = c1; // instead of .append(c1)