gpt4 book ai didi

java - 改进我的 Java 方法 containsSubstring(s1, s2) 来判断 s2 是否是 s1 的子串

转载 作者:行者123 更新时间:2023-11-29 09:02:44 26 4
gpt4 key购买 nike

我是一名大学生,最近接受了实习职位的面试。其中一件事要求我编写一个方法,将两个字符串作为输入并在第二个参数是第一个参数的子字符串时返回 true。上交的答案并不令我满意,于是在开车回家的路上想到了以下解决办法:

// containsSubstring(s1,s2) returns true if the string s2 is contained within s1
public static boolean containsSubstring(String s1, String s2) {

if(s2.length()==0 && s1!=null)
return true;

for(int i=s2.length()-1;i<=s1.length()-1;i++) {
if(s2.charAt(s2.length()-1) == (s1.charAt(i))) {
int k=i;
for(int j=s2.length(); j>0;j--) {
if(s1.charAt(k) != s2.charAt(j-1))
j=-1; // exits loop.
else if (j == 1)
return true;
else
k--;
}
}
}

return false;
}

此代码主要检查 s2 的最后一个字符是否等于 s1 的当前索引,如果是,则向后循环查看它们是否完全匹配。

我喜欢这个解决方案的两点是,如果 s2.length() > s1.length(),循环将不会执行,该方法将只返回 false,而且它不必检查每个字符在 s1 中找到答案。

我是否可以在可读性、方法论、更好的编程实践等方面做出任何改进?

最佳答案

我建议看看 String.contains(CharSequence src) src 是如何实现的,应该不错

关于java - 改进我的 Java 方法 containsSubstring(s1, s2) 来判断 s2 是否是 s1 的子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16420127/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com