【发布时间】:2018-12-20 15:44:08
【问题描述】:
我正在使用 JAVA 编写,我编写了一个递归布尔函数,它获取 2 个字符串,如果第一个字符串是第二个字符串的前缀,则应该返回。 我的代码:
public static boolean prefix(String s, String t)
{
int i = s.length()-1;
if (s.charAt(i) == t.charAt(i) && s.length() >= 0)
{
return true;
}
return false;
}
例如,如果我在主要写作:
s = "Del";
f = "Delight";
该功能也可以正常工作。
但如果我写的是s = "Dellll"、f = "Dell",它会说“越界”。为什么?
第二件事是它不适用于大小字符。例如:
s ="Dell"
f ="dell"
对于上述情况,它将返回 true。
谢谢。
【问题讨论】:
-
这看起来不是递归的?你也可以使用
s.length()-1来获取s的最后一个字符和t但是t可能更短,在这种情况下它会抛出IndexOutOfBoundsException -
如果你想检查一个前缀,为什么不直接使用startsWith方法呢?