[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:
		
							parent
							
								
									e2b376516e
								
							
						
					
					
						commit
						ec3fcc078d
					
				| @ -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); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user