Java Exercises: Check a string follows a specified pattern
Java Basic: Exercise-199 with Solution
Write a Java program to check a string follows a given pattern.
Example pattern:
Given pattern = "xyyx", str = "red black black red", return true.
Given pattern = "xyyx", str = "red black black green", return false.
Given pattern = "xxxx", str = "red black black red", return false.
Given pattern = "xxxx", str = "red red red red", return true.
Sample Solution:
Java Code:
import java.util.*;
public class Solution {
public static void main(String[] args) {
String str = "red black black red";
//String str = "red red red red";
String pattern = "xyxx";
//String pattern = "xxxx";
System.out.print("Is the string and pattern matched? " + word_Pattern_Match(pattern, str));
}
public static boolean word_Pattern_Match(String pattern, String str) {
char[] word_pattern = pattern.toCharArray();
String[] words = str.split(" ");
Map < Character, String > map = new HashMap < > ();
Set < String > set = new HashSet < > ();
for (int i = 0; i < word_pattern.length; i++) {
if (map.containsKey(word_pattern[i])) {
if (!map.get(word_pattern[i]).equals(words[i])) {
return false;
}
continue;
}
if (set.contains(words[i])) {
return false;
}
map.put(word_pattern[i], words[i]);
set.add(words[i]);
}
return true;
}
}
Sample Output:
Is the string and pattern matched? false
Pictorial Presentation:
Flowchart:

Java Code Editor:
Contribute your code and comments through Disqus.
Previous: Write a Java program to get the position of a given prime number.
Next: Write a Java program to remove duplicate letters and arrange in lexicographical order from a given string which contains only lowercase letters.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
Java: Tips of the Day
How to remove leading zeros from alphanumeric text?
Regex is the best tool for the job; what it should be depends on the problem specification. The following removes leading zeroes, but leaves one if necessary (i.e. it wouldn't just turn "0" to a blank string).
s.replaceFirst("^0+(?!$)", "")
The ^ anchor will make sure that the 0+ being matched is at the beginning of the input. The (?!$) negative lookahead ensures that not the entire string will be matched.
Test harness:
String[] in = { "01234", // "[1234]" "0001234a", // "[1234a]" "101234", // "[101234]" "000002829839", // "[2829839]" "0", // "[0]" "0000000", // "[0]" "0000009", // "[9]" "000000z", // "[z]" "000000.z", // "[.z]" }; for (String s : in) { System.out.println("[" + s.replaceFirst("^0+(?!$)", "") + "]"); }
Ref: https://bit.ly/2Qdcl8a
- Weekly Trends
- Java Basic Programming Exercises
- SQL Subqueries
- Adventureworks Database Exercises
- C# Sharp Basic Exercises
- SQL COUNT() with distinct
- JavaScript String Exercises
- JavaScript HTML Form Validation
- Java Collection Exercises
- SQL COUNT() function
- SQL Inner Join
- JavaScript functions Exercises
- Python Tutorial
- Python Array Exercises
- SQL Cross Join
- C# Sharp Array Exercises