String Algorithms
String validation algorithms are quite common when determining the properties or attributes of the string. The output of a validation algorithm is boolean, that is, true or false.
Validating all-or-nothing properties
Scenario : Find if a given string is UPPERCASE or lowercase
public class CheckStringPropertiesAlgorithm {
public static boolean isUpperCase(String s) {
return s.chars().allMatch(Character::isUpperCase);
}
public static boolean isLowerCase(String s) {
return s.chars().allMatch(Character::isLowerCase);
}
public static void main(String[] args) {
System.out.println(isUpperCase("HELLO"));
System.out.println(isLowerCase("naiomi"));
System.out.println(isLowerCase("NAIDOO"));
}
}
Validating specific properties
Scenario : Check if a string has at least 1 UPPERCASE character, 1 lowercase character and 1 number.
public class Algorithms {
public static void main(String[] args) {
System.out.println(isStringComplex("HeLl0"));
System.out.println(isStringComplex("HeLlo"));
}
public static boolean isStringComplex(String s) {
return s.chars().anyMatch(Character::isUpperCase) &&
s.chars().anyMatch(Character::isLowerCase) &&
s.chars().anyMatch(Character::isDigit);
}
}
Normalize string
public static String normalizeString(String s) {
return s.toLowerCase().trim().replace(",", "");
}
public static void main(String[] args) {
System.out.println(normalizeString(" T rsf YNSP,2 3"));
}
Reverse a string
public static String reverseString(String s) {
if (s == null || s.isEmpty()) {
return s;
}
StringBuilder reversed = new StringBuilder();
for (int i = s.length() - 1; i >= 0; i--) {
reversed.append(s.charAt(i));
}
return reversed.toString();
}
public static String reverseStringUsingBuiltInMethod(String s) {
if (s == null || s.isEmpty()) {
return s;
}
StringBuilder stringBuilder = new StringBuilder(s);
return stringBuilder.reverse().toString();
}
public static void main(String[] args) {
System.out.println(reverseString("Hello"));
System.out.println(reverseStringUsingBuiltInMethod("Naiomi"));
}
