Evg*_*niy 3 java string substring matching
\n给定一个字符串,返回出现在字符串开头和结尾且不重叠的最长子字符串。例如,sameEnds(“abXab”) 是“ab”。
\nsameEnds("abXYab") \xe2\x86\x92 "ab"\nsameEnds("xx") \xe2\x86\x92 "x"\nsameEnds("xxx") \xe2\x86\x92 "x"\nRun Code Online (Sandbox Code Playgroud)\n我的解决方案通过了除一个之外的所有测试^:
\npublic String sameEnds(String string) {\n String substringFront = "";\n String substringEnd = "";\n String longestSubstring = "";\n \n for (int i = 1; i < string.length() - 1; i++) {\n substringFront = string.substring(0, i);\n substringEnd = string.substring(i);\n \n if (substringEnd.contains(substringFront)) {\n longestSubstring = substringFront;\n }\n }\n \n return longestSubstring;\n}\nRun Code Online (Sandbox Code Playgroud)\n这里有什么问题?我该如何解决它?
\n\n除了@Dan 和其他人恰当指出的技术问题之外,我想强调不必要的复杂性问题,这在许多情况下会导致此类逻辑错误。
鉴于此,并考虑到这是一个挑战,我更喜欢一种简约的方法,如下所示,它是不言自明的,因此易于理解和调试。
public String sameEnds(String string) {
int middle = string.length() / 2;
for (int i = middle; i >= 0; i--) {
String left = string.substring(0, i);
if (string.endsWith(left)) {
return left;
}
}
return "";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
610 次 |
| 最近记录: |