This is a java program to search string using simple algorithm BoyerMoore.
Here is the source code of the Java Program to Implement the String Search Algorithm for Short Text Sizes. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
package com.maixuanviet.setandstring;
import java.util.Scanner;
class BoyerMoore
{
private final int BASE;
private int[] occurrence;
private String pattern;
public BoyerMoore(String pattern)
{
this.BASE = 256;
this.pattern = pattern;
occurrence = new int[BASE];
for (int c = 0; c < BASE; c++)
occurrence = -1;
for (int j = 0; j < pattern.length(); j++)
occurrence[pattern.charAt(j)] = j;
}
public int search(String text)
{
int n = text.length();
int m = pattern.length();
int skip;
for (int i = 0; i <= n - m; i += skip)
{
skip = 0;
for (int j = m - 1; j >= 0; j--)
{
if (pattern.charAt(j) != text.charAt(i + j))
{
skip = Math.max(1, j - occurrence[text.charAt(i + j)]);
break;
}
}
if (skip == 0)
return i;
}
return n;
}
}
public class StringSearch
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.print("Enter the main string: ");
String text = sc.nextLine();
System.out.print("Enter the string to be searched: ");
String pattern = sc.nextLine();
BoyerMoore bm = new BoyerMoore(pattern);
int first_occur_position = bm.search(text);
System.out.println("The text '" + pattern
+ "' is first found after the " + first_occur_position
+ " position.");
sc.close();
}
}
Output:
$ javac StringSearch.java $ java StringSearch Enter the main string: I will soon be working in Redmond USA with Mircosoft. Enter the string to be searched: soon The text 'soon' is first found after the 7 position.
Related posts:
What is a POJO Class?
Filtering a Stream of Optionals in Java
Java – Reader to String
Vấn đề Nhà sản xuất (Producer) – Người tiêu dùng (Consumer) và đồng bộ hóa các luồng trong Java
Java – Reader to Byte Array
Removing Elements from Java Collections
RestTemplate Post Request with JSON
List Interface trong Java
Java Program to Check Whether it is Weakly Connected or Strongly Connected for a Directed Graph
Derived Query Methods in Spring Data JPA Repositories
Java Program to Find the Peak Element of an Array O(n) time (Naive Method)
A Guide to TreeSet in Java
JUnit 5 @Test Annotation
Tìm hiểu về Web Service
Versioning a REST API
Java – Generate Random String
Period and Duration in Java
Java Program to Represent Graph Using Adjacency List
Java Program to Check if any Graph is Possible to be Constructed for a Given Degree Sequence
Java Program to Implement Sorted Circularly Singly Linked List
Hamcrest Collections Cookbook
Registration with Spring Security – Password Encoding
Lớp lồng nhau trong java (Java inner class)
Spring Boot - Servlet Filter
How to Kill a Java Thread
Java Program to Perform the Unique Factorization of a Given Number
Spring REST API + OAuth2 + Angular
Java Program to Implement the RSA Algorithm
Java Program to Implement LinkedBlockingDeque API
Jackson Date
Java Program to Check the Connectivity of Graph Using BFS
Guide to DelayQueue