トピック:
整数NUMSの配列を指定して、
そして、目標値の目標。アレイ内の所与の標的の開始および終了位置を特定します。
トピック分析:
配列を指定して1は、整数の配列として定義され、その後、我々は知ることができ、ターゲットも整数です。
配列の2呼び出しのターゲットを開始する位置と終了位置は、我々は内部のターゲットのリストで下付き位置のうちの誰かを見つけることができ、我々は内部のリストの最初の要素を拾うリストにこれらのインデックス位置と最後の要素は、対応する開始位置と終了位置です。
その後、我々は我々のコードを達成するために始めることができます。
2つの方法が私たちを向上させるためにしながら、私たちのコードの先頭から、我々は、達成するためPythonとJavaの2つのバージョンを使用しますが、また、学習者の二つの言語のために。
まず、Pythonの記事を見てみましょう。
デフ(:リスト、ターゲット:int型NUMS)を見つけます: listone = [] 範囲内のiについて(LEN(NUMS)): NUMS [i]を==ターゲットの場合: listone.append(I) 場合lenは(listone)== 0: Falseを返します 戻りlistone [0]、listone [-1]
テスト:
クラステストケース(たunittest.TestCase): デフセットアップ(自己) - >なし: パス デフティアダウン(自己) - >なし: パス デフTESTONE(自己): 結果=([1,2,3,4]、5)検索 self.assertFalse(結果) デフtesttwo(自己): 結果=([1,2,3,4]、1)検索 self.assertEqual(その結果、(0,0)) デフtestthree(自己): 結果=([1,2,3,4,1]、1)検索 self.assertEqual(その結果、(0,4)) デフtestfour(自己): 結果=([1、2、3、4、1]、 "1")を見つけます self.assertEqual(その結果、偽) デフtestfive(自己): 結果=検索([ "1"、2、3、4、1]、1) self.assertEqual(その結果、(4,4)) デフtestsix(自己): 結果=([1]、1)検索 self.assertEqual(その結果、(0、0)) __name __ == "__ MAIN__" の場合: unittest.main()
テスト結果:
私たちは、現在の問題が発見されていない見ることができます。このように、Pythonのバージョンは、完全に達成するために
次に我々は、Javaの対応するバージョンを見に行きまし実現する方法です。
実装コード:
パブリッククラス検索{ 公共の地図<文字列、整数> findby(一覧<整数>リスト、整数targert){ 一覧<整数> integerList =新しいArrayListを<>(); 以下のために(INT i = 0; i)は、(はlist.sizeを<; iは++します){ IF(list.get(I).equals(targert)){ integerList.add(I); } } 地図<文字列、整数>マップ=新しいHashMapの<>(); IF(integerList.size()== 0){ map.put( "第一"、NULL); マップを返します。 }他{ map.put( "第一"、integerList.get(0))。 map.put( "最後の"、integerList.get(integerList.size() - 1)); マップを返します。 } } }
テストコード:
パブリッククラスFindTest { @ org.testng.annotations.Test ます。public void testFindby(){ 一覧<整数> integerList =新しいArrayListを<>(); integerList.add(0)。 )(=新しい検索を見つけて下さい。 地図<文字列、整数>マップ= find.findby(integerList、1)。 assertEquals(map.get( "第一")、NULL); } @ org.testng.annotations.Test 公共ボイドtestFindby1(){ 一覧<整数> integerList =新しいArrayListを<>(); integerList.add(0)。 )(=新しい検索を見つけて下さい。 地図<文字列、整数>マップ= find.findby(integerList、0); assertEquals(map.get( "第一")、新しい整数(0)); assertEquals(map.get( "第一")、新しい整数(0)); } @ org.testng.annotations.Test 公共ボイドtestFindby2(){ 一覧<整数> integerList =新しいArrayListを<>(); integerList.add(0)。 integerList.add(0)。 )(=新しい検索を見つけて下さい。 地図<文字列、整数>マップ= find.findby(integerList、0); assertEquals(map.get( "最後の")、新しい整数(1)); assertEquals(map.get( "第一")、新しい整数(0)); } @ org.testng.annotations.Test 公共ボイドtestFindby3(){ 一覧<整数> integerList =新しいArrayListを<>(); integerList.add(0)。 integerList.add(0)。 integerList.add(0)。 )(=新しい検索を見つけて下さい。 地図<文字列、整数>マップ= find.findby(integerList、0); assertEquals(map.get( "最後の")、新しい整数(2))。 assertEquals(map.get( "第一")、新しい整数(0)); } @ org.testng.annotations.Test 公共ボイドtestFindby4(){ 一覧<整数> integerList =新しいArrayListを<>(); integerList.add(0)。 integerList.add(1)。 integerList.add(0)。 )(=新しい検索を見つけて下さい。 地図<文字列、整数>マップ= find.findby(integerList、0); assertEquals(map.get( "最後の")、新しい整数(2))。 assertEquals(map.get( "第一")、新しい整数(0)); } }
試験結果は:コードカバレッジを増加させ、
カバレッジ
その後、我々が行われ、テストカバレッジによれば、我々は、現在完了し、コードパスが百パーセントをカバーしてきたがテストしています。
フォローアップは、私たちが質問を磨くために、一緒に成長し、より多くのコードを複数のトピックを共有していきます。サンダーのサンズは、テストが、あなたに別の経験を与えると述べました。すべてのコードは、単一の測定のために、100%のカバレッジを達成するためにすべてのコードを努めています。
公共の番号をプッシュするすべての記事の優先順位。