[rm-char-in-other-str] BAEL-7355 Remove characters from a string that… (#15531)

* [rm-char-in-other-str] BAEL-7355 Remove characters from a string that are present in a second string

* [rm-char-in-other-str] shorten the package name
This commit is contained in:
Kai Yuan 2024-01-06 03:20:08 +01:00 committed by GitHub
parent e2b376516e
commit ec3fcc078d
1 changed files with 75 additions and 0 deletions

View File

@ -0,0 +1,75 @@
package com.baeldung.string.rmcharsinanotherstring;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.HashSet;
import java.util.Set;
import org.junit.jupiter.api.Test;
public class RemoveCharsInAnotherStringUnitTest {
private static final String STRING = "a b c d e f g h i j";
private static final String OTHER = "bdfhj";
String nestedLoopApproach(String theString, String other) {
StringBuilder sb = new StringBuilder();
for (char c : theString.toCharArray()) {
boolean found = false;
for (char o : other.toCharArray()) {
if (c == o) {
found = true;
break;
}
}
if (!found) {
sb.append(c);
}
}
return sb.toString();
}
String loopAndIndexOfApproach(String theString, String other) {
StringBuilder sb = new StringBuilder();
for (char c : theString.toCharArray()) {
if (other.indexOf(c) == -1) {
sb.append(c);
}
}
return sb.toString();
}
String hashSetApproach(String theString, String other) {
StringBuilder sb = new StringBuilder();
Set<Character> set = new HashSet<>(other.length());
for (char c : other.toCharArray()) {
set.add(c);
}
for (char i : theString.toCharArray()) {
if (!set.contains(i)) {
sb.append(i);
}
}
return sb.toString();
}
@Test
void whenUsingTheNestedLoopApproach_thenGetExpectedResult() {
String result = nestedLoopApproach(STRING, OTHER);
assertEquals("a c e g i ", result);
}
@Test
void whenUsingTheLoopAndIndexOfApproach_thenGetExpectedResult() {
String result = loopAndIndexOfApproach(STRING, OTHER);
assertEquals("a c e g i ", result);
}
@Test
void whenUsingTheHashSetApproach_thenGetExpectedResult() {
String result = hashSetApproach(STRING, OTHER);
assertEquals("a c e g i ", result);
}
}