Java 字符串上的操作

Java 字符串上的操作,java,recursion,Java,Recursion,我正在尝试为以下字符串操作编写代码: 1反转字符串。 这就是我所拥有的: String rev = ""; String reverse(String s){ if(s.length() == 1){ return s; } else { rev += s.charAt(s.length()-1)

我正在尝试为以下字符串操作编写代码:

1反转字符串。 这就是我所拥有的:

 String rev = ""; 
        String reverse(String s){
            if(s.length() == 1){
                return s; 
           } 
           else {
                rev += s.charAt(s.length()-1)
                        +reverse(s.substring(0,s.length()-1));
                return rev;
            }
        }
2如果两个字符串彼此相等

  int compareString(char a, char b, int n){
        if (n == 0 || a == 0 || a != b){
           return a - b;
         }
        else {
           return(compareString(a+1, b+1, n-1));
        }
     }
3如果字符串是回文,例如eye或racecar,则向前和向后读取相同的内容

boolean checkPalindrome (String s){
        if(s.length() == 0 || s.length() == 1){
            return true; 
        }
        if(s.charAt(0) == s.charAt(s.length()-1)){
        return checkPalindrome (s.substring(1, s.length()-1));
       }
        return false;
    }
我不清楚2号。作为递归思维的练习,我只喜欢递归技术和上面的更正。多谢各位

如果两个字符串彼此相等

  int compareString(char a, char b, int n){
        if (n == 0 || a == 0 || a != b){
           return a - b;
         }
        else {
           return(compareString(a+1, b+1, n-1));
        }
     }
比较两个字符串时,必须传入字符串

public static boolean isEquals(String a, String b) {
   if (a.length() != b.length()) return false;
   return isEquals(a, b, 0);
}

private static boolean isEquals(String a, String b, int index) {
    if (index >= a.length()) return true;
    if (a.charAt(index) != b.charAt(index)) return false;
    return isEquals(a, b, index + 1);
}
或者如果性能不重要

public static boolean isEquals(String a, String b) {
   if (a.length() == 0)
       return b.length() == 0;
   if (b.length() == 0)
       return false;
   return a.charAt(0) == b.charAt(0) &&
       isEquals(a.subString(1), b.subString(1));
}

如果你只是不清楚第二部分,那应该是唯一的问题。现在,当您只提供两个字符时,您希望如何比较两个字符串?请仅对问题使用适当的标记。例如,上面的代码属于Java而不是C。如果您想要/需要C或其他语言的响应,请用所需语言发布此类问题;在方法内部,看看调用reverse两次会发生什么。我不清楚这不是一个可以解决的问题。请告诉我们在实际数据示例中哪些有效,哪些无效,并提出具体问题。对于第二个选项,如果性能无关紧要,则是非常正确的说法,因为子字符串复制了Java 8中的底层数组。