кодесурса

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

script1adsense2code
script1adsense3code

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

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

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

Java-код:

import java.util.*;
class Main
{
    public static String pickSubstring(String samp_str ,String pat_str)
	{
        int ln1  = samp_str.length();
        int ln2  = pat_str.length();
        if(ln1 < ln2)
		{ 
            System.out.println("No such window can exist");
            return "";
        }
        int gvn_strg [] = new int[256];
        int pat_stgr [] = new int[256];
        for(int i=0;i<ln2;i++)
            pat_stgr[pat_str.charAt(i)]++;
        int ctr = 0,start = 0,start_index = -1,min_length = Integer.MAX_VALUE;
        for(int j=0;j<ln1;j++)
		{
            gvn_strg[samp_str.charAt(j)]++;
            if(pat_stgr[samp_str.charAt(j)] != 0 && gvn_strg[samp_str.charAt(j)] <= pat_stgr[samp_str.charAt(j)])
                ctr++;
            if(ctr == ln2)
			{
                while(gvn_strg[samp_str.charAt(start)] > pat_stgr[samp_str.charAt(start)] || pat_stgr[samp_str.charAt(start)] == 0)
				{
                    if(gvn_strg[samp_str.charAt(start)] > pat_stgr[samp_str.charAt(start)] || pat_stgr[samp_str.charAt(start)] == 0)
                        gvn_strg[samp_str.charAt(start)]--;
                    start++;
                }
                int length_window = j - start + 1;
                if(min_length > length_window)
				{
                    min_length = length_window;
                    start_index = start;
                }
            }
        }
        if(start_index == -1)
		{
            System.out.println("No such window exists");
            return "";
        }
        return samp_str.substring(start_index,start_index + min_length);
    }
    public static void main(String args[])
	{
        String str ="welcome to w3resource";
        String pat ="tower";
        System.out.println("The given string is: "+str);
        System.out.println("Characters to find in the main string are: "+pat);
        
        System.out.print("The smallest window which contains the finding characters is : " + pickSubstring(str, pat));
    }
}

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

 Данная строка: добро пожаловать в w3resource
Символы для поиска в главной строке: башня
Наименьшее окно, содержащее символы поиска: w3re

Блок - схема:

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

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

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

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

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

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


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code