【问题标题】:how to check if two string makes a third string recursively如何检查两个字符串是否递归地生成第三个字符串
【发布时间】:2013-02-10 01:27:27
【问题描述】:

这是给我们三个字符串的问题。

a=partyrock
b=anthem
c=partyrockanthem

任务是检查字符串a和b组合是否可以生成字符串c。规则是如果字符串中的字母不能更改顺序,但可以从一个字符串跳转到另一个字符串。 所以让我们说c = pantartyrohemck 在这种情况下,您从一个字符串移动到另一个字符串以制作最终字符串。

这是我的递归代码,问题是我找不到返回值的方法。如果您有更简单的方法,请提前告诉我谢谢。

public class Hw4c {
    public static boolean everyDayImShuffling(String a, String b, String c)
    {
        boolean result = shufflinga(a,b,c,0,0,0); 

             return result; 

    }
    public static boolean shufflinga (String a, String b, String c, int d, int e, int f)
    {
        if(a.substring(d,d+1).equals(c.substring(f,f+1)))
        {
            if(d!=a.length()-1)
            {
                d=d+1; 
                f=f+1; 
                shufflinga(a,b,c,d,e,f); 
            }
            else
            {
                if(e!=b.length()-1)
                shufflingb(a,b,c,d,e,f);
            }

        }
        else
        {
             shufflingb(a,b,c,d,e,f);
        }

       return true; 
    }
    public static boolean shufflingb (String a, String b, String c, int d, int e, int f)
    {

        if(b.substring(e,e+1).equals(c.substring(f,f+1)))
        {
            if(e!=b.length()-1)
            {   
                e=e+1;
                f=f+1; 
                shufflingb(a,b,c,d,e,f); 
            }
            else 
            {
                if(d!=a.length()-1)
                {
                    shufflinga(a,b,c,d,e,f); 
                }

            }
        }

        return true; 
    }
}

【问题讨论】:

  • 你不认为向别人寻求解决方案是作弊吗?
  • 我只是在问我应该如何处理它。
  • “找不到返回值的方法”是什么意思? (在我看来,您毫不费力地返回“true”。)(方法可以具有布尔以外的返回类型。)
  • 我从我的帮助方法中来回切换 a 和 shufflingb。然后返回最终答案
  • 就像我说的,你可以有一个布尔值以外的返回类型。并且可以返回 null 来表示“失败”。

标签: java string recursion


【解决方案1】:

这是一个简单的动态语句。

if((a + b).equals(c)) System.out.println("Equal");

这是完成同样事情的方法:

public boolean recursiveEqual(String a, String b, String c) {
if((a + b).equals(c)) return true;
else return false;
}

【讨论】:

  • 答案应该是递归的
  • 我的回答怎么没有做到这一点?
【解决方案2】:

我会尝试抽象地设计一个解决方案

checkWords(String a, String b, String combined){

int _a = 0, _b = 0;

for (int i = 0; i < combined.length(); i++){
    char c = combined.charAt(i);  
    if (c == a.charAt(_a))
        _a++;
    else if (c == b.charAt(_b))
        _b++;
    else return false;
}

return true;
}

请注意,这不包括检查 null 或空输入字符串
当当前 a 和 b 字符相等时,它也不做决定

【讨论】:

  • @dflkjfhlkjhlkdsjf 我已经说过了,它不涉及这种情况,这由你来解决。
  • 好的,谢谢你想通了。只需要在它们都相等时放置条件
【解决方案3】:

你可以使用:

if ((a + b).equals(c)) {
  // Equals!
}

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 2021-11-02
    • 1970-01-01
    • 2021-01-11
    • 2018-06-26
    • 2016-04-07
    • 1970-01-01
    • 2013-02-02
    相关资源
    最近更新 更多