class
GFG
{
final
static
int
MAX =
26
;
static
int
maxSubStr(
char
[]str1,
int
len1,
char
[]str2,
int
len2)
{
if
(len1 > len2)
return
0
;
int
freq1[] =
new
int
[MAX];
for
(
int
i =
0
; i < len1; i++)
freq1[i] =
0
;
for
(
int
i =
0
; i < len1; i++)
freq1[str1[i] -
'a'
]++;
int
freq2[] =
new
int
[MAX];
for
(
int
i =
0
; i < len2; i++)
freq2[i] =
0
;
for
(
int
i =
0
; i < len2; i++)
freq2[str2[i] -
'a'
]++;
int
minPoss = Integer.MAX_VALUE;
for
(
int
i =
0
; i < MAX; i++)
{
if
(freq1[i] ==
0
)
continue
;
if
(freq1[i] > freq2[i])
return
0
;
minPoss = Math.min(minPoss, freq2[i] / freq1[i]);
}
return
minPoss;
}
public
static
void
main (String[] args)
{
String str1 =
"geeks"
, str2 =
"gskefrgoekees"
;
int
len1 = str1.length();
int
len2 = str2.length();
System.out.println(maxSubStr(str1.toCharArray(), len1,
str2.toCharArray(), len2));
}
}