diff --git a/Java/README.md b/Java/README.md index 2ab86de..923c18a 100644 --- a/Java/README.md +++ b/Java/README.md @@ -13,6 +13,8 @@ ___ * [Can_You_Access](pdf/can-you-access.pdf) - [Solution](java/Can_You_Access.java) * [Covariant_Return_Types](pdf/java-covariance.pdf) - [Solution](java/Covariant_Return_Types.java) * [Factory_pattern](pdf/java-factory.pdf) - [Solution](java/Factory_pattern.java) +* [MD5](pdf/java-md5.pdf) - [Solution](java/MD5.java) +* [SHA256](pdf/sha-256.pdf) - [Solution](java/SHA256.java) * [Varargs_Simple_Addition](pdf/simple-addition-varargs.pdf) - [Solution](java/Varargs_Simple_Addition.java) ___ ### Big Number @@ -66,6 +68,7 @@ ___ ___ ### Strings * [Anagrams](pdf/java-anagrams.pdf) - [Solution](java/Anagrams.java) +* [Duplicate_words](pdf/duplicate-word.pdf) - [Solution](java/DuplicateWords.java) * [Pattern_syntax_checker](pdf/pattern-syntax-checker.pdf) - [Solution](java/Pattern_syntax_checker.java) * [Regex](pdf/java-regex.pdf) - [Solution](java/Regex.java) * [String_compare](pdf/java-string_compare.pdf) - [Solution](/java/String_compare.java) diff --git a/Java/java/DuplicateWords.java b/Java/java/DuplicateWords.java new file mode 100644 index 0000000..49c1911 --- /dev/null +++ b/Java/java/DuplicateWords.java @@ -0,0 +1,31 @@ +import java.util.Scanner; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class DuplicateWords { + + public static void main(String[] args) { + + String regex = "\\b([A-Za-z]+)\\b(\\s+\\1\\b)+"; + Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); + + Scanner in = new Scanner(System.in); + int numSentences = Integer.parseInt(in.nextLine()); + + while (numSentences-- > 0) { + String input = in.nextLine(); + + Matcher m = p.matcher(input); + + // Check for subsequences of input that match the compiled pattern + while (m.find()) { + input = input.replaceAll(m.group(), m.group(1)); + } + + // Prints the modified sentence. + System.out.println(input); + } + + in.close(); + } +} \ No newline at end of file diff --git a/Java/java/MD5.java b/Java/java/MD5.java new file mode 100644 index 0000000..848d986 --- /dev/null +++ b/Java/java/MD5.java @@ -0,0 +1,19 @@ +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Scanner; +import javax.xml.bind.DatatypeConverter; + +public class MD5 { + + public static void main(String[] args) { + Scanner in = new Scanner(System.in); + try { + MessageDigest md5 = MessageDigest.getInstance("MD5"); + String input = in.nextLine(); + System.out.println(DatatypeConverter.printHexBinary(md5.digest(input.getBytes())).toLowerCase()); + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException("Invalid hashing algorithm"); + } + in.close(); + } +} diff --git a/Java/java/SHA256.java b/Java/java/SHA256.java new file mode 100644 index 0000000..2072e6a --- /dev/null +++ b/Java/java/SHA256.java @@ -0,0 +1,19 @@ +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Scanner; +import javax.xml.bind.DatatypeConverter; + +public class SHA256 { + + public static void main(String[] args) { + Scanner in = new Scanner(System.in); + try { + MessageDigest sha256 = MessageDigest.getInstance("SHA-256"); + String input = in.nextLine(); + System.out.println(DatatypeConverter.printHexBinary(sha256.digest(input.getBytes())).toLowerCase()); + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException("Invalid hashing algorithm"); + } + in.close(); + } +} diff --git a/Java/pdf/duplicate-word.pdf b/Java/pdf/duplicate-word.pdf new file mode 100644 index 0000000..1360f10 Binary files /dev/null and b/Java/pdf/duplicate-word.pdf differ diff --git a/Java/pdf/java-md5.pdf b/Java/pdf/java-md5.pdf new file mode 100644 index 0000000..552eec1 Binary files /dev/null and b/Java/pdf/java-md5.pdf differ diff --git a/Java/pdf/sha-256.pdf b/Java/pdf/sha-256.pdf new file mode 100644 index 0000000..87a80ec Binary files /dev/null and b/Java/pdf/sha-256.pdf differ diff --git a/Regex/README.md b/Regex/README.md index 2ae4623..b68cb45 100644 --- a/Regex/README.md +++ b/Regex/README.md @@ -51,7 +51,7 @@ Problem | Java | Javascript | Python [Backreferences_To_Failed_Groups](pdf/backreferences-to-failed-groups.pdf) | [Solution](java/Backreferences_To_Failed_Groups.java) | N/A | N/A [Branch_Reset_Groups](pdf/branch-reset-groups.pdf) | [Solution](java/Branch_Reset_Groups.java) | N/A | N/A [Forward_References](pdf/forward-references.pdf) | [Solution](java/Forward_References.java) | N/A | N/A -[Mathcing_Same_Text_Again_Again](pdf/matching-same-text-again-again.pdf) | [Solution](java/Matching_Same_Text_Again_Again.java) | N/A | N/A +[Matching_Same_Text_Again_Again](pdf/matching-same-text-again-again.pdf) | [Solution](java/Matching_Same_Text_Again_Again.java) | N/A | N/A ___ ### Assertions Problem | Java | Javascript | Python