By GokiSoft.com| 18:27 17/04/2024|
Java Basic

[Share Code] Test - Tìm kiếm chuỗi trong chuỗi - C2307L

Test - Tìm kiếm chuỗi trong chuỗi

/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package com.gokisoft.c2307l.lesson03;

import java.util.Scanner;

/**
 *
 * @author diepvan
 */
public class Main {
    public static void main(String[] args) {
        //Bai tap > https://gokisoft.com/test-tim-kiem-chuoi-trong-chuoi.html?his=C2307L
        //B1. Khai bao bo nhap du lieu
        Scanner scan = new Scanner(System.in);
        
        //B2. Nhap du lieu dau vao
        String sourceStr, searchingStr;
        System.out.println("Nhap chuoi goc: ");
        sourceStr = scan.nextLine();
        System.out.println("Nhap chuoi tim kiem: ");
        searchingStr = scan.nextLine();
        
        //B3. Giai thuat tim kiem
        //Vi du: sourceStr = a(0)a(1)a(2)a(3)b(4)b(5)a(6)a(7)a(8), searchingStr = aa
        //Yeu cau 1:
        //Ket qua: aa | aabb | aaa -> Tim ra dc 3 lan xuat hien -> Easy
        int index = 0;
        int count = 0;
        while(true) {
            int findingIndex = sourceStr.indexOf(searchingStr, index);
            //Lan 1: findingIndex = 0
            //Lan 2: findingIndex = 2
            //Lan 3: findingIndex = 6
            //Lan 4: findingIndex = -1 => Ko tim thay nua
//            System.out.println("findingIndex = " + findingIndex);
            if(findingIndex >= 0) {
                count++;
                System.out.println("Vi tri tim thay: " + findingIndex);
                //index (1): 0 + 2 = 2
                //index (2): 2 + 2 = 4
                //index (3): 6 + 2 = 8
                index = findingIndex + searchingStr.length();
            } else {
                break;
            }
        }
        System.out.println("So lan tim thay: " + count);
        
        //Yeu cau 2:
        //Ket qua: aa | aa | aabb | aa | aa -> Tim dc 5 lan xuat hien -> Hard
        index = 0;
        count = 0;
        while(true) {
            int findingIndex = sourceStr.indexOf(searchingStr, index);
            if(findingIndex >= 0) {
                count++;
                System.out.println("Vi tri tim thay (2): " + findingIndex);
                index = findingIndex + 1;
            } else {
                break;
            }
        }
        System.out.println("So lan tim thay (2): " + count);
    }
}

Tags:

Phản hồi từ học viên

5

(Dựa trên đánh giá ngày hôm nay)