Given a String and an array of prefixes. The task is to check whether the given String starts with any of the given prefixes or not.
Example:
Input: String = “GeeksforGeeks”, Prefixes = {“Geeks”, “for”, “Gfor”}
Output: true
Input: String = “GeeksforGeeks”, Prefixes = {“Freaks”, “for”, “Freak”}
Output: false
Below are the following approaches that can be used to complete the given task:
- Naive Approach: This method involves the checking the String for each of the prefix array element explicitly.
Algorithm:
- Get the string and the prefixes to be matched with.
- Using loop, iterate through the prefixes and check whether the string starts with the respective prefix. This is done with the help of String.startsWith() method.
- If any prefix is matched, then return true else return false.
Program 1:
class PrefixSearch {
public static void main(String[] args)
{
String[] arr = { "Geeks" , "for" , "Gfor" };
String str = "GeeksforGeeks" ;
boolean result = false ;
for ( int i = 0 ; i < 3 ; i++) {
if (str.startsWith(arr[i])) {
result = true ;
break ;
}
}
if (result)
System.out.println( "Given String "
+ "starts with one of the prefixes." );
else
System.out.println( "Given String do not "
+ "starts with one of the prefixes." );
}
}
|
Output:
Given String starts with one of the prefixes.
Program 2:
class PrefixSearch {
public static void main(String[] args)
{
String[] arr = { "Freaks" , "for" , "Freak" };
String str = "GeeksforGeeks" ;
boolean result = false ;
for ( int i = 0 ; i < 3 ; i++) {
if (str.startsWith(arr[i])) {
result = true ;
break ;
}
}
if (result)
System.out.println( "Given String "
+ "starts with one of the prefixes." );
else
System.out.println( "Given String do not "
+ "starts with one of the prefixes." );
}
}
|
Output:
Given String do not starts with one of the prefixes.
- Using Regular expression:
Algorithm:
- Get the string and the prefixes to be matched with.
- Form a Regular Expression to check if the string starts with any of the prefix. This can be done using String.matches() method.
- If any prefix is matched, then return true else return false.
Program 1:
class PrefixSearch {
public static void main(String[] args)
{
String[] arr = { "Geeks" , "for" , "Gfor" };
String str = "GeeksforGeeks" ;
if (str.matches( "(" + arr[ 0 ] + "|"
+ arr[ 1 ] + "|"
+ arr[ 2 ] + ").*" ))
System.out.println( "Given String "
+ "starts with one of the prefixes." );
else
System.out.println( "Given String do not "
+ "starts with one of the prefixes." );
}
}
|
Output:
Given String starts with one of the prefixes.
Program 2:
class PrefixSearch {
public static void main(String[] args)
{
String[] arr = { "Freaks" , "for" , "Freak" };
String str = "GeeksforGeeks" ;
if (str.matches( "(" + arr[ 0 ] + "|"
+ arr[ 1 ] + "|"
+ arr[ 2 ] + ").*" ))
System.out.println( "Given String "
+ "starts with one of the prefixes." );
else
System.out.println( "Given String do not "
+ "starts with one of the prefixes." );
}
}
|
Output:
Given String do not starts with one of the prefixes.
- Using Java 8 Streams API:
Algorithm:
- Get the string and the prefixes to be matched with.
- Convert the Prefixes into Stream using Stream.of()
- Check if any prefix matches using Predicate str::startsWith. This is done using Stream.anyMatch() method.
- If any prefix is matched, then return true else return false.
Program 1:
import java.util.stream.Stream;
class PrefixSearch {
public static void main(String[] args)
{
String[] arr = { "Geeks" , "for" , "Gfor" };
String str = "GeeksforGeeks" ;
if (Stream.of(arr)
.anyMatch(str::startsWith))
System.out.println( "Given String "
+ "starts with one of the prefixes." );
else
System.out.println( "Given String do not "
+ "starts with one of the prefixes." );
}
}
|
Output:
Given String starts with one of the prefixes.
Program 2:
import java.util.stream.Stream;
class PrefixSearch {
public static void main(String[] args)
{
String[] arr = { "Freaks" , "for" , "Freak" };
String str = "GeeksforGeeks" ;
if (Stream.of(arr)
.anyMatch(str::startsWith))
System.out.println( "Given String "
+ "starts with one of the prefixes." );
else
System.out.println( "Given String do not "
+ "starts with one of the prefixes." );
}
}
|
Output:
Given String do not starts with one of the prefixes.
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!
Last Updated :
11 Dec, 2018
Like Article
Save Article