Java Program to Repeatedly Search the Same Text (such as Bible by building a Data Structure)

This is a java program to repeatedly search a string from the sample string.

Here is the source code of the Java Program to Repeatedly Search the Same Text (such as Bible by building a Data Structure). 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 BoyerMooreAlgo
{
    private final int BASE;
    private int[]     occurrence;
    private String    pattern;
 
    public BoyerMooreAlgo(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 void search(String text)
    {
        int n = text.length();
        int m = pattern.length();
        int skip = 0;
        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)
            {
                System.out.println("The text '" + pattern
                        + "' is first found after the " + i + " position.");
                i++;
            }
        }
        if (skip == 0)
            System.out.println("The text '" + pattern
                    + "' is first found after the " + n + " position.");
    }
}
 
public class ReperatedStringSearch
{
    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();
        BoyerMooreAlgo bm = new BoyerMooreAlgo(pattern);
        bm.search(text);
        sc.close();
    }
}

Output:

$ javac ReperatedStringSearch.java
$ java ReperatedStringSearch
 
Enter the main string: Sanfoundry is No. 1 choice for Deep Hands-ON Trainings in SAN, Linux & C, Kernel & Device Driver Programming. Our Founder has trained employees of almost all Top Companies in India. Here are few of them: VMware, Citrix, Oracle, Motorola, Ericsson, Aricent, HP, Intuit, Microsoft, Cisco, SAP Labs, Siemens, Symantec, Redhat, Chelsio, Cavium Networks, ST Microelectronics, Samsung, LG-Soft, Wipro, TCS, HCL, IBM, Accenture, HSBC, Northwest Bank, Mphasis, Tata Elxsi, Tata Communications, Mindtree, Cognizant, mid size IT companies and many Startups. Students from top Universities and colleges such as NIT Trichy, BITS Pilani, University of California, Irvine, University of Texas, Austin & PESIT Bangalore have benefited a lot from these courses as well. The assignments and real time projects for our courses are of extremely high quality with excellent learning curve.
Enter the string to be searched: C
The text 'C' is first found after the 71 position.
The text 'C' is first found after the 162 position.
The text 'C' is first found after the 212 position.
The text 'C' is first found after the 280 position.
The text 'C' is first found after the 324 position.
The text 'C' is first found after the 333 position.
The text 'C' is first found after the 397 position.
The text 'C' is first found after the 402 position.
The text 'C' is first found after the 425 position.
The text 'C' is first found after the 470 position.
The text 'C' is first found after the 496 position.
The text 'C' is first found after the 639 position.

Related posts:

Tạo ứng dụng Java RESTful Client với thư viện OkHttp
Optional trong Java 8
Java Timer
Ép kiểu trong Java (Type casting)
Java Program to Search Number Using Divide and Conquer with the Aid of Fibonacci Numbers
Spring Boot - Tomcat Deployment
Java Byte Array to InputStream
Functional Interface trong Java 8
Java Program to Implement Sparse Matrix
Guide to the Java Clock Class
Java Program to Implement Gabow Algorithm
Implementing a Binary Tree in Java
Copy a List to Another List in Java
Java Program to Solve a Matching Problem for a Given Specific Case
New in Spring Security OAuth2 – Verify Claims
Java Program to Implement ConcurrentSkipListMap API
Servlet 3 Async Support with Spring MVC and Spring Security
Hướng dẫn Java Design Pattern – Service Locator
Configuring a DataSource Programmatically in Spring Boot
Java Program to Compute Discrete Fourier Transform Using the Fast Fourier Transform Approach
Java Program to Describe the Representation of Graph using Adjacency Matrix
Spring Boot - File Handling
Introduction to Spliterator in Java
Java Program to Perform Searching Based on Locality of Reference
Java Program to Find the Longest Subsequence Common to All Sequences in a Set of Sequences
Java Program to Find SSSP (Single Source Shortest Path) in DAG (Directed Acyclic Graphs)
Java Program to Find Strongly Connected Components in Graphs
Java Program to Implement Pagoda
Giới thiệu Swagger – Công cụ document cho RESTfull APIs
Java Program to Solve the 0-1 Knapsack Problem
Java Program to Implement Pairing Heap
Java Program to Implement the Monoalphabetic Cypher