如何使用递归检查2个字符串是否相似?

时间:2012-03-13 05:01:42

标签: java

例如

check("abs","abc");// Return true
check("ab","ac");// Return false
check("ab","abc");// Return false

你如何递归地编写这个方法

      public static boolean check(String s1, String s2) {
if (s1.equals(s2)) {
return 1;
if (s1.length < s2.length) {
return 0;
if (s1.length > s2.length) {
return 0;
if (s1.length == s2.length) {
for (int i; i< s1.length; i++){
if(s1.charAt[i].equalss2.charAt[i]) {
return 1

    ??
    }

我做了一些修改并试图先自己接近,但我不知道这段代码是编译还是做我想做的事。

4 个答案:

答案 0 :(得分:0)

无需使用递归,您可以使用此

来实现此目的
public static boolean check(String s1, String s2) {
    int count = 0;
    if (s1.length() != s2.length()) {
        return false;
    else {
       for (int i=0; i< s1.length(); i++){
           if(s1.charAt(i) != s2.charAt(i)) 
                return false;
           count = i;
       }
       if(count == s1.length()-1)
            return true;
    }
    return false;
}

答案 1 :(得分:0)

我认为你想这样做是因为这是一项任务,不是因为这是一个好主意。 :)所以我不打算为你编写代码,但逻辑是这样的:

  • 如果两个字符串都为空,则它们相等
  • 如果两个字符串都有第一个字符,那么如果第一个字符相等且字符串的其余部分相等则它们相等(递归步骤)
  • 否则字符串不相等

答案 2 :(得分:0)

你通常不会递归地写这个,但如果你真的坚持,明显的方法是比较字符串的第一个字符,并(递归地)比较其余字符(返回值是逻辑{{1}这两个)。当/如果你到达终点(空字符串)那些也是平等的。

答案 3 :(得分:0)

Recursion:

  

在数学和计算机科学中,当一类对象或方法可以由两个属性定义时,它们表现出递归行为:

A simple base case (or cases), and
A set of rules which reduce all other cases toward the base case.

因此,您已定义这两个属性并在方法中实现它。 这种基本案例通常定义在某些特殊值上,例如0""

在您的示例中,您可以定义当两个字符串都为""时会发生什么。 (基本情况)

其他属性必须导致基本情况,通过此规则表示您必须达到基本情况。在您的情况下,空字符串""

此属性可能是某种substring - 操作,这将导致""(基本情况)。所以这个规则可能是:如果第一个字符和剩余字符串(通过check(remaining string的递归)相等,则字符串相等。