From 0f4905d1d99740139a661fd32226d89baa902449 Mon Sep 17 00:00:00 2001 From: shellhub Date: Thu, 27 Aug 2020 00:01:50 +0800 Subject: [PATCH 1/2] * Lower.java * Upper.java * Pangram.java * CharactersSame.java * CheckAnagrams.java --- strings/CharactersSame.java | 29 +++++++++++++++++++++++++++ strings/CheckAnagrams.java | 32 ++++++++++++++++++++++++++++++ strings/Lower.java | 30 ++++++++++++++++++++++++++++ strings/Pangram.java | 39 +++++++++++++++++++++++++++++++++++++ strings/Upper.java | 30 ++++++++++++++++++++++++++++ 5 files changed, 160 insertions(+) create mode 100644 strings/CharactersSame.java create mode 100644 strings/CheckAnagrams.java create mode 100644 strings/Lower.java create mode 100644 strings/Pangram.java create mode 100644 strings/Upper.java diff --git a/strings/CharactersSame.java b/strings/CharactersSame.java new file mode 100644 index 000000000..d88c03209 --- /dev/null +++ b/strings/CharactersSame.java @@ -0,0 +1,29 @@ +package strings; + +public class CharactersSame { + + /** + * Driver Code + */ + public static void main(String[] args) { + assert isAllCharactersSame(""); + assert !isAllCharactersSame("aab"); + assert isAllCharactersSame("aaa"); + assert isAllCharactersSame("11111"); + } + + /** + * check if all the characters of a string are same + * + * @param s the string to check + * @return {@code true} if all characters of a string are same, otherwise {@code false} + */ + public static boolean isAllCharactersSame(String s) { + for (int i = 1, length = s.length(); i < length; ++i) { + if (s.charAt(i) != s.charAt(0)) { + return false; + } + } + return true; + } +} diff --git a/strings/CheckAnagrams.java b/strings/CheckAnagrams.java new file mode 100644 index 000000000..46642e01e --- /dev/null +++ b/strings/CheckAnagrams.java @@ -0,0 +1,32 @@ +package strings; + +import java.util.Arrays; + +/** + * Two strings are anagrams if they are made of the same letters + * arranged differently (ignoring the case). + */ +public class CheckAnagrams { + public static void main(String[] args) { + assert isAnagrams("Silent", "Listen"); + assert isAnagrams("This is a string", "Is this a string"); + assert !isAnagrams("There", "Their"); + } + + /** + * Check if two strings are anagrams or not + * + * @param s1 the first string + * @param s2 the second string + * @return {@code true} if two string are anagrams, otherwise {@code false} + */ + public static boolean isAnagrams(String s1, String s2) { + s1 = s1.toLowerCase(); + s2 = s2.toLowerCase(); + char[] values1 = s1.toCharArray(); + char[] values2 = s2.toCharArray(); + Arrays.sort(values1); + Arrays.sort(values2); + return new String(values1).equals(new String(values2)); + } +} diff --git a/strings/Lower.java b/strings/Lower.java new file mode 100644 index 000000000..15cc027eb --- /dev/null +++ b/strings/Lower.java @@ -0,0 +1,30 @@ +package strings; + +public class Lower { + + /** + * Driver Code + */ + public static void main(String[] args) { + String[] strings = {"ABC", "ABC123", "abcABC", "abc123ABC"}; + for (String s : strings) { + assert toLowerCase(s).equals(s.toLowerCase()); + } + } + + /** + * Converts all of the characters in this {@code String} to lower case + * + * @param s the string to convert + * @return the {@code String}, converted to lowercase. + */ + public static String toLowerCase(String s) { + char[] values = s.toCharArray(); + for (int i = 0; i < values.length; ++i) { + if (Character.isLetter(values[i]) && Character.isUpperCase(values[i])) { + values[i] = Character.toLowerCase(values[i]); + } + } + return new String(values); + } +} diff --git a/strings/Pangram.java b/strings/Pangram.java new file mode 100644 index 000000000..a18cb12c7 --- /dev/null +++ b/strings/Pangram.java @@ -0,0 +1,39 @@ +package strings; + +/** + * Wikipedia: https://en.wikipedia.org/wiki/Pangram + */ +public class Pangram { + + /** + * Driver Code + */ + public static void main(String[] args) { + assert isPangram("The quick brown fox jumps over the lazy dog"); + assert !isPangram("The quick brown fox jumps over the azy dog"); /* not exists l character */ + } + + /** + * Check if a string is a pangram string or not + * + * @param s string to check + * @return {@code true} if given string is pangram, otherwise {@code false} + */ + public static boolean isPangram(String s) { + boolean[] marked = new boolean[26]; /* by default all letters don't exists */ + char[] values = s.toCharArray(); + for (char value : values) { + if (Character.isLetter(value)) { + int index = Character.isUpperCase(value) ? value - 'A' : value - 'a'; + marked[index] = true; /* mark current character exists */ + } + } + + for (boolean b : marked) { + if (!b) { + return false; + } + } + return true; + } +} diff --git a/strings/Upper.java b/strings/Upper.java new file mode 100644 index 000000000..ef5a616d0 --- /dev/null +++ b/strings/Upper.java @@ -0,0 +1,30 @@ +package strings; + +public class Upper { + + /** + * Driver Code + */ + public static void main(String[] args) { + String[] strings = {"ABC", "ABC123", "abcABC", "abc123ABC"}; + for (String s : strings) { + assert toUpperCase(s).equals(s.toUpperCase()); + } + } + + /** + * Converts all of the characters in this {@code String} to upper case + * + * @param s the string to convert + * @return the {@code String}, converted to uppercase. + */ + public static String toUpperCase(String s) { + char[] values = s.toCharArray(); + for (int i = 0; i < values.length; ++i) { + if (Character.isLetter(values[i]) && Character.isLowerCase(values[i])) { + values[i] = Character.toUpperCase(values[i]); + } + } + return new String(values); + } +} From e88ff87df5d462f3f9b23dcba686e59c69ee8059 Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Wed, 26 Aug 2020 16:03:29 +0000 Subject: [PATCH 2/2] updating DIRECTORY.md --- DIRECTORY.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/DIRECTORY.md b/DIRECTORY.md index 6abc2b576..0f2e3528c 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -146,6 +146,7 @@ * [PerfectNumber](https://github.com/TheAlgorithms/Java/blob/master/Maths/PerfectNumber.java) * [PerfectSquare](https://github.com/TheAlgorithms/Java/blob/master/Maths/PerfectSquare.java) * [Pow](https://github.com/TheAlgorithms/Java/blob/master/Maths/Pow.java) + * [PowerOfTwoOrNot](https://github.com/TheAlgorithms/Java/blob/master/Maths/PowerOfTwoOrNot.java) * [PowRecursion](https://github.com/TheAlgorithms/Java/blob/master/Maths/PowRecursion.java) * [PrimeCheck](https://github.com/TheAlgorithms/Java/blob/master/Maths/PrimeCheck.java) * [PrimeFactorization](https://github.com/TheAlgorithms/Java/blob/master/Maths/PrimeFactorization.java) @@ -182,7 +183,6 @@ * [LowestBasePalindrome](https://github.com/TheAlgorithms/Java/blob/master/Others/LowestBasePalindrome.java) * [PasswordGen](https://github.com/TheAlgorithms/Java/blob/master/Others/PasswordGen.java) * [PerlinNoise](https://github.com/TheAlgorithms/Java/blob/master/Others/PerlinNoise.java) - * [PowerOfTwoOrNot](https://github.com/TheAlgorithms/Java/blob/master/Others/PowerOfTwoOrNot.java) * [QueueUsingTwoStacks](https://github.com/TheAlgorithms/Java/blob/master/Others/QueueUsingTwoStacks.java) * [RabinKarp](https://github.com/TheAlgorithms/Java/blob/master/Others/RabinKarp.java) * [RemoveDuplicateFromString](https://github.com/TheAlgorithms/Java/blob/master/Others/RemoveDuplicateFromString.java) @@ -235,5 +235,10 @@ ## strings * [Alphabetical](https://github.com/TheAlgorithms/Java/blob/master/strings/Alphabetical.java) + * [CharactersSame](https://github.com/TheAlgorithms/Java/blob/master/strings/CharactersSame.java) + * [CheckAnagrams](https://github.com/TheAlgorithms/Java/blob/master/strings/CheckAnagrams.java) + * [Lower](https://github.com/TheAlgorithms/Java/blob/master/strings/Lower.java) * [Palindrome](https://github.com/TheAlgorithms/Java/blob/master/strings/Palindrome.java) + * [Pangram](https://github.com/TheAlgorithms/Java/blob/master/strings/Pangram.java) * [ReverseString](https://github.com/TheAlgorithms/Java/blob/master/strings/ReverseString.java) + * [Upper](https://github.com/TheAlgorithms/Java/blob/master/strings/Upper.java)