![](/img/trans.png)
[英]How can I check if two strings have the same letters, but only print the common letters once?
[英]How to check if 2 strings have common substrings with n letters
我要求編寫代碼來檢查 2 個字符串是否具有帶有 n 個字母的公共子字符串。 n 變量將由用戶輸入,即需要找到多少個共同字母。
例如,如果我輸入n=2
並且這些是兩個字符串:
"THE FIRST BANK OF AMERICA"
"A MAN NAMED ICARUS WANTED TO FLY TO THE SUN "
它會打印這個:
TH HE E F AN AM ME IC CA
我需要代碼簡單,因為我們剛剛開始,所以我不能使用 Java 中的任何特殊庫。
我會 go 在每個字符串上,將 n 長度的子字符串提取到一個集合中,然后將兩者相交:
public static void main(String[] args) {
int n = 2;
String s1 = "THE FIRST BANK OF AMERICA";
String s2 = "A MAN NAMED ICARUS WANTED TO FLY TO THE SUN";
Set<String> substrings1 = getSubstrings(s1, n);
Set<String> substrings2 = getSubstrings(s2, n);
substrings1.retainAll(substrings2);
System.out.println(substrings1);
}
private static Set<String> getSubstrings(String s, int n) {
return IntStream.range(0, s.length() - n + 1)
.mapToObj(i -> s.substring(i, i + n))
.collect(Collectors.toCollection(LinkedHashSet::new));
}
注意: \
Collectors.toCollection(LinkedHashSet::new)
來保留子字符串的順序,以便按照與問題中指定的順序相同的順序獲取 output。 如果訂單無關緊要,您可以使用Collectors.toSet()
代替,這樣會快一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.