2009-06-23 16 views
1

私は私がで立ち往生して、私が最初に私はあなたが完全なソリューションを投稿いけない尋ねることができますしてください再びJavaの練習問題

立ち往生しています練習問題で先日掲載しました。

質問はこちらから

http://www.javabat.com/prob/p141494

あると

を読み込み、文字列と第二の「単語」の文字列を考えると、我々はそれがで表示された場合は単語が文字列と一致していることを言いますよ最初の文字は正確に一致する必要はありません。マッチでは、文字列の先頭を返すか、空の文字列を返します。したがって、文字列 "hippo"では "hi"という単語が "hi"を返し、 "xip"は "hip"を返します。ワードは、少なくとも長さ1

startWord( "カバ"、 "HI")→ "HI" startWord( "カバ"、 "XIP")→ "HIP" startWord( "カバ"、「であろう私 ")→" h "

私は非常に立ち往生している、質問の文句は私を助けていない!これは私が持っているコードで、これまで

public String startWord(String str, String word) 
{ 

if (str.startsWith(word)){ 
    return str.substring(0, word.length()); 
} 

if (str.substring(1, str.length()).equals(word.substring(1, word.length()))){ 
    return str.substring(0, word.length()); 
} 

return ""; 
} 

うまくいけば、誰かが助けてくれてありがとう、ポインタまたは2で、ここで私を助けることができるだろうが

+0

"正確に一致する必要はありません"とはどういう意味ですか? – samoz

+0

@ samozでは、 "正確に一致しない"という条件が質問で説明されています。 Wordは文字列がWordで始まる場合String、文字列はXordで始まります.Xordは最初の文字が変更されたWordです。 – Sean

+0

どこに投稿すべきかわからない、私は今それをやったと思うが、ここはそれだ! すべての助けを借りてくれてありがとう! はい、あなたが私に言いましたが、あなたは私にヒントを求めて解決策を求めてくれました:) –

答えて

3

問題は2番目の比較(一般的なケース)です。あなたはstrの部分文字列をstrの最後に置き、それを単語の部分文字列と単語の最後と比較しています。しかし、str = "hippo"とword = "xip"、 "ippo"!= "ip"の場合。

2番目のケースを修正すると、2番目のケースでカバーされるように、最初のケースは実際には必要ありません。

-2

あなたから始まる、正規表現を使用して試みることができます2番目の文字で、一致するものがあるかどうかを確認します。私はあなたが行ったことを見ているように、何らかの部分文字列を行うこともできます。

1文字の長さの文字列の境界の場合、正しく戻すようにハードコードします。

2

最初の文字を無視する場合は、word.length() - 1文字と文字列と単語の両方の長さを比較したいだけです。

最初の文字が完全に一致するケースをテストする必要はありません。最初の文字を無視するケースのサブセットです。

-2

Regexを試してみてください!

java.lang.String 

boolean matches(String regex) 
2

2番目のIF文の問題は、単語を部分文字列全体と比較していることです。あなたは(もちろんその長さをチェックした後)にそれを比較する必要があることです:あなたはそこに右のアイデアを持っている

str.substring(1,word.length()).equals(word.substring(1,word.length())) 
+0

あなたがそれを捨てた以外は何を言っていたのですか? ;)OPは正確な解決策ではなくヒントを求めた。 – Sean

2

...単にword.lengthに文字1からSTRの部分文字列を比較しますを部分文字列の単語に、文字1から単語の最後まで変換します。 が一致する場合は、strword.lengthの部分文字列を返します。

0

は、使用してみてください:

条件について
if (str.length() > 0 && str.substring(1).startsWith(word.substring(1))) { 

それがより明確であるとして。また、tvanfossonとDarth Eruは、最初の文字の完全一致の最初の条件は無関係であるという点が正しいといえます。

0

ここ

import junit.framework.TestCase; 

public class HippoTest extends TestCase { 

    public void testActualStart() throws Exception { 
     assertEquals("hi", startWord("hippo", "hi")); 
    } 

    public void testSimilarStart() throws Exception { 
     assertEquals("xip", startWord("hippo", "hip")); 
     assertEquals("h", startWord("i", "hip")); 
    } 

    public void testWrongStart() throws Exception { 
     assertEquals("", startWord("hippo", "hx")); 
    } 

    private String startWord(String string, String string2) { 
     // TODO Auto-generated method stub 
     return null; 
    } 
} 

の出発点は、これらのテストケースは、一度に1を渡す作る場合は、おそらくそれは、一度に全体の問題を解決しようとするよりも簡単になりますです。