字符串操作

时间:2015-09-22 19:47:38

标签: java recursion

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

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.作为一种递归思维练习,我更倾向于只采用递归技术和校正。谢谢。

1 个答案:

答案 0 :(得分:2)

  

如果两个字符串彼此相等。

比较两个字符串时,必须传入字符串。

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