この特定のインタビューの質問は私を困惑させました:
Given two Strings S1 and S2. Find the longest Substring which is a Prefix of S1 and suffix of S2
.
Google を通じて、次のソリューションに出くわしましたが、それが何をしているのかよくわかりませんでした。
public String findLongestSubstring(String s1, String s2) {
List<Integer> occurs = new ArrayList<>();
for (int i = 0; i < s1.length(); i++) {
if (s1.charAt(i) == s2.charAt(s2.length()-1)) {
occurs.add(i);
}
}
Collections.reverse(occurs);
for(int index : occurs) {
boolean equals = true;
for(int i = index; i >= 0; i--) {
if (s1.charAt(index-i) != s2.charAt(s2.length() - i - 1)) {
equals = false;
break;
}
}
if(equals) {
return s1.substring(0,index+1);
}
}
return null;
}
私の質問:
- このソリューションはどのように機能しますか?
- そして、このソリューションを発見するにはどうすればよいでしょうか?
- より直感的で簡単なソリューションはありますか?