-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJava-Substring-Comparison.java
71 lines (55 loc) · 2.23 KB
/
Java-Substring-Comparison.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
Problem Statement 13: Java Substring Comparisons
We define the following terms:
Lexicographical Order, also known as alphabetic or dictionary order, orders characters as follows:
A<B<C<D.......<Y<Z<a<b<c........<y<z
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 are a, b, c, ab, bc, and abc.
Given a string, s, and an integer, k, complete the function so that it finds the lexicographically smallest and largest substrings of length k.
Function Description
Complete the getSmallestAndLargest function in the editor below.
getSmallestAndLargest has the following parameters:
string s: a string
int k: the length of the substrings to find
Returns
string: the string ' + "\n" + ' where and are the two substrings
Input Format
The first line contains a string denoting s.
The second line contains an integer denoting k.
Constraints
1 <= |s| <= 1000
s consists of English alphabetic letters only (i.e., [a-zA-Z]).
Sample Input 0
welcometojava
3
Sample Output 0
ava
wel
Explanation 0
String s = "welcome to java" has the following lexicographically-ordered substrings of length :
["ava","com","elc","eto","jav","lco","met","oja","ome","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.
*/
import java.io.*;
import java.util.*;
public class Solution13 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
int k = sc.nextInt();
String minSubstring = s.substring(0,k);
String maxSubstring = s.substring(0,k);
for (int i = 1; i < s.length()-k+1; i++) {
String sub = s.substring(i,i+k);
if (sub.compareTo(minSubstring) < 0) {
minSubstring = sub;
}
if (sub.compareTo(maxSubstring) > 0) {
maxSubstring = sub;
}
}
System.out.println(minSubstring);
System.out.println(maxSubstring);
}
}