有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中反转字符串时出错

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

    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) 个答案

  1. # 1 楼答案

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

    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();
    

    如果考虑简单的追加欺骗使用^ {CD1>},可以用:

    替换它
    char[] reversed = new char[str.length()];
    int next = 0;
    ...
    reversed[next++] = c1; // instead of .append(c1)
    
  2. # 2 楼答案

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

  3. # 3 楼答案

    除了@zaskes answer之外,您还希望在循环之前int count = 0;,而不是在循环内部