説明タイトル(簡単)
STRSTR()を実装
STRSTR()を実装。
干し草の山の中の針が最初に出現する位置のインデックスを返し、または-1針は干し草の山の一部ではない場合。
例1
Input: haystack = "hello", needle = "ll"
Output: 2
例2
Input: haystack = "aaaaa", needle = "bba"
Output: -1
明確化:
針が空の文字列であるとき、私たちは何を返す必要がありますか?これはインタビューの中で聞いて素晴らしい質問です。
針が空の文字列であるとき、この問題のために、我々は0を返します。これは、Cのはstrstr()とJavaののindexOf()に一致しています。
ベースソリューション
この問題では、STRSTR機能は、最初に一致した文字列が表示されますの位置を返すことです。Javaでは、その中で、関数がこの機能のために提供されます。つまりIndexOfメソッド
indexOfの戻り値のint
見つかった場合、文字位置の開始文字を見つけるために戻るインデックスインデックス(0から始まる)を。
見つからない場合は、-1を返します
以下を参照してください。
public class containString
{
public static void main(String[] args)
{
String str1 = "sdfsfsfa2we";
String str2 = "we";
String str3 = "me";
System.out.println(str1.indexOf(str2));
System.out.println(str1.indexOf(str3));
}
}
だから、あなたは直接使用することができるのindexOfは、この機能の機能を実装します。
コードの最適化
加えて、我々はまた、溶液に他の人を参照し、コードを最適化することができます。この機能を実装します。
反復ループの使用であり、それが見つかったとするまで、判定値を比較する方法を用いて、針等しいアレイは、座標を返します。それ以外の場合は、インデックス= -1
class Solution {
public int strStr(String haystack, String needle) {
if(needle.length()==0)
{
return 0;
}
int index = -1;
for(int i=0;i<=haystack.length()-needle.length();i++)
{
if(haystack.charAt(i)==needle.charAt(0))
{
if(haystack.substring(i,i+needle.length()).equals(needle))
{
return i;
}
}
}
return index;
}
}