-3

我想反转一个字符串,我知道有成千上万的例子,但我想自己完成这项工作,我创建了这个,但它不能正常工作。

    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;
    }
4

3 回答 3

1

看看你的循环的条件 - 它应该是i >= 0
另外 - 你的解决方案分配了一个不必要的数组(有些算法用一个数组执行这个,而不是你的) - 我认为你应该努力编写你的程序以使用很棒的表演。

于 2012-07-07T05:27:23.587 回答
1

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

于 2012-07-07T05:28:29.717 回答
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();

如果您考虑使用StringBufferfor simple appends 作弊,您可以将其替换为:

char[] reversed = new char[str.length()];
int next = 0;
...
reversed[next++] = c1; // instead of .append(c1)
于 2012-07-07T06:20:50.083 回答