кодесурса

Упражнения по Java-строке: сопоставьте две строки, где одна строка содержит символы подстановки

script1adsense2code
script1adsense3code

Строка Java: упражнение 53 с решением

Напишите Java-программу для сопоставления двух строк, где одна строка содержит символы подстановки.

Пример решения :

Java-код:

import java.util.*;
class Main
{    
    public static boolean chkMatching(char[] str1, char[] patstr, int n, int m, 
                                    boolean[][] lookup)
    {
        if (m < 0 && n < 0) 
		{
            return true;
        }
        else if (m < 0) 
		{
            return false;
        }
        else if (n < 0)
        {
            for (int i = 0; i <= m; i++) 
			{
                if (patstr[i] !='*') 
				{
                    return false;
                }
            }
            return true;
        }
        if (!lookup[m][n])
        {
            if (patstr[m] =='*')
            {
                lookup[m][n] = chkMatching(str1, patstr, n - 1, m, lookup) ||
                            chkMatching(str1, patstr, n, m - 1, lookup);
            }
            else 
			{
                if (patstr[m] !='?' && patstr[m] != str1[n]) 
				{
                    lookup[m][n] = false;
                }
                else 
				{
                    lookup[m][n] = chkMatching(str1, patstr, n - 1, m - 1, lookup);
                }
            }
        }
        return lookup[m][n];
    }
    public static void main(String[] args)
    {
      String st1="abcdhgh";
      String st2="abc*d?*";
      System.out.println("The given string is: "+st1);	
      System.out.println("The given pattern string is: "+st2);	
        char[] str1 = st1.toCharArray();
        char[] patstr = st2.toCharArray();		
		
        boolean[][] lookup = new boolean[str1.length + 1][patstr.length + 1];
        if (chkMatching(str1, patstr, str1.length - 1, patstr.length - 1, lookup)) 
		{
            System.out.println("The given pattern is matching.");
        } 
		else 
		{
            System.out.println("The given pattern is not matching.");
        }
    }
}

Пример вывода:

 Данная строка: abcdhgh
Данная строка шаблона: abc * d? *
Данный шаблон соответствует.

Иллюстрированная презентация:


Блок-схема: 1

«Блок-схема:

Блок-схема: 2

«Блок-схема:

Редактор кода Java:

Улучшите этот пример решения и опубликуйте свой код через Disqus

Предыдущий: Напишите программу на Java, чтобы проверить, являются ли две данные строки вращением друг друга.
Далее: Напишите программу на Java, чтобы найти наименьшее окно в строке, содержащей все символы другой строки.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code