We define the following terms:
-
For example,
ball < cat
,dog < dorm
,Happy < happy
,Zoo < ball
. - A substring of a string is a contiguous block of characters in the string. For example, the substrings of
abc
area
,b
,c
,ab
,bc
, andabc
.
Given a string, , and an integer, , complete the function so that it finds the lexicographically smallest and largest substrings of length .
Input Format
The first line contains a string denoting .
The second line contains an integer denoting .
The second line contains an integer denoting .
Constraints
- consists of English alphabetic letters only (i.e.,
[a-zA-Z]
).
Output Format
Return the respective lexicographically smallest and largest substrings as a single newline-separated string.
Sample Input 0
welcometojava
3
Sample Output 0
ava
wel
Explanation 0
String has the following lexicographically-ordered substrings of length :
[ ''ava'',''com'', ''elc'', ''eto'',''jav'',''lco'',''met'',''ome'',''oja'',toj'',''wel'' ]
We then return the first (lexicographically smallest) substring and the last (lexicographically largest) substring as two newline-separated values (i.e.,
ava\nwel
).
The stub code in the editor then prints
ava
as our first line of output and wel
as our second line of output.
Program:
import java.util.Scanner;
public class Solution {
public static String getSmallestAndLargest(String s, int k)
{
String substring = s.substring(0, k);
String smallest = substring;
String largest = substring;
for (int i = 1; i <= s.length() - k; i++)
{
// Create a substring of length 'k'
substring = s.substring(i, i + k);
// If current substring is lexicographically smaller than 'smallest'
if (substring.compareTo(smallest) < 0)
{
smallest = substring;
}
// If current substring is lexicographically larger than 'largest'
if (substring.compareTo(largest) > 0)
{
largest = substring;
}
}
return smallest + "\n" + largest;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s = scan.next();
int k = scan.nextInt();
scan.close();
System.out.println(getSmallestAndLargest(s, k));
}
}
0 Comments