1

これが3つの文字列が与えられた問題です。

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

3 に答える 3

3

抽象的にソリューションを設計しようとします

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文字が等しい場合は常に決定も行われません。

于 2013-02-24T23:26:26.143 に答える
1

次を使用できます。

if ((a + b).equals(c)) {
  // Equals!
}
于 2013-02-24T23:26:33.017 に答える
0

これを行うための単純で動的なステートメントを次に示します。

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;
}
于 2013-02-24T23:24:31.607 に答える