mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-07 01:35:16 +08:00
Add Isomorphic Strings (#3253)
Co-authored-by: Andrii Siriak <siryaka@gmail.com>
This commit is contained in:
33
src/main/java/com/thealgorithms/strings/Isomorphic.java
Normal file
33
src/main/java/com/thealgorithms/strings/Isomorphic.java
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
package com.thealgorithms.strings;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class Isomorphic {
|
||||||
|
public static boolean checkStrings(String s, String t) {
|
||||||
|
if(s.length() != t.length()){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// To mark the characters of string using MAP
|
||||||
|
// character of first string as KEY and another as VALUE
|
||||||
|
// now check occurence by keeping the track with SET data structure
|
||||||
|
Map<Character, Character> characterMap = new HashMap<Character, Character>();
|
||||||
|
Set<Character> trackUinqueCharacter = new HashSet<Character>();
|
||||||
|
|
||||||
|
for(int i=0; i<s.length(); i++){
|
||||||
|
if(characterMap.containsKey(s.charAt(i))){
|
||||||
|
if(t.charAt(i) != characterMap.get(s.charAt(i))){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if(trackUinqueCharacter.contains(t.charAt(i))){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
characterMap.put(s.charAt(i), t.charAt(i));
|
||||||
|
}
|
||||||
|
trackUinqueCharacter.add(t.charAt(i));
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
30
src/test/java/com/thealgorithms/strings/IsomorphicTest.java
Normal file
30
src/test/java/com/thealgorithms/strings/IsomorphicTest.java
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package com.thealgorithms.strings;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class IsomorphicTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
String str1 = "abbbbaac";
|
||||||
|
String str2 = "kffffkkd";
|
||||||
|
|
||||||
|
String str3 = "xyxyxy";
|
||||||
|
String str4 = "bnbnbn";
|
||||||
|
|
||||||
|
String str5 = "ghjknnmm";
|
||||||
|
String str6 = "wertpopo";
|
||||||
|
|
||||||
|
String str7 = "aaammmnnn";
|
||||||
|
String str8 = "ggghhhbbj";
|
||||||
|
|
||||||
|
Isomorphic isomorphic = new Isomorphic();
|
||||||
|
|
||||||
|
assertTrue(isomorphic.checkStrings(str1, str2));
|
||||||
|
assertTrue(isomorphic.checkStrings(str3, str4));
|
||||||
|
assertFalse(isomorphic.checkStrings(str5, str6));
|
||||||
|
assertFalse(isomorphic.checkStrings(str7, str8));
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user