stream 함수를 연습해보고자 어떻게든 도입하고 싶었는데.. 생각보다 구현이 단순하게 안나와서 어쩔수 없이 for 문으로 중복제거를 했다
for (int i = 0; i < str.length() - 1; i++) {
char a = str.charAt(i);
char b = str.charAt(i + 1);
if (Character.isLetter(a) && Character.isLetter(b)) {
pair.add(a + "" + b);
}
}
배열은 2자쌍으로 만들어야 한다. 2개 이상의 원소가 집합이기 때문에 최소 단위인 문자 배열을 만들어 주어야 하는데, 특수문자와 숫자 공백을 모두 제거해야하기 때문에 isLetter
함수를 사용하였다.
for (String s : str1Pair) {
if (str2Pair.remove(s)) {
intersect.add(s);
}
union.add(s);
}
for (String s : str2Pair) {
union.add(s);
}
intersect 는 교집합에 해당하는 부분이므로 str1Pair
가 아닌 str2Pair로 for문을 돌려도 무방하다. 같은 값을 가진 함수를 제거 하는 방식으로 union 리스트에도 함께 더해줄 수 있다. 두번째 for문에서 제거하고 남은 쌍을 입력해준다
stream 함수 쓰신 분들 보니까 너무 눈에 안들어오고 반복적인 코드가 많아보여서 안 쓰는 게 나을 것 같았다.