问题描述
对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1
解法
方法一
最基本方法,不采用任何算法
注意:对于空串的处理
public static int f(String source, String target)
{
if (source == null || target == null)
return -1;
if ((source == "" && target == "" )||(source != "" && target == "" ) )
return 0;
if (source == "" && target != "")
return -1;
boolean sign = false;
int begin = 0;
for (; begin < source.length() && sign == false; begin++)
{
int i = begin;
int j = 0;
while (j < target.length()&& i < source.length() && source.charAt(i) == target.charAt(j))
{
i++;
j++;
}
if (j == target.length())
{
sign = true;
}
}
if (sign)
{
return begin - 1;
} else
{
return -1;
}
}
方法二
KMP经典算法
参考链接