Sunday 24 March 2019

Java Substring Comparisons HackerRank Solution in Java

Problem:-

We define the following terms:
  • Lexicographical Order, also known as alphabetic or dictionary order, orders characters as follows: 
    For example, ball < catdog < dormHappy < happyZoo < ball.
  • substring of a string is a contiguous block of characters in the string. For example, the substrings of abc are abcabbc, and abc.
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 .
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 :
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.
Solution:-

import java.util.Scanner;

public class Solution {

public static String getSmallestAndLargest(String s, int k) {
String smallest = "";
String largest = "";
smallest = largest = s.substring(0, k);

for (int i=1; i<s.length()-k+1; i++) {
String substr = s.substring(i, i+k);
if (smallest.compareTo(substr) > 0)
smallest = substr;
if (largest.compareTo(substr) < 0)
largest = substr;
}

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));
}
}

9 comments:

  1. can you help me with the iteration.
    I am getting the following variable value when i am iterating.

    when i=5;
    substring=MET
    and smallest=com ,largest=ome
    at that time none of the condition in if() is getting true can you help with me?

    ReplyDelete
  2. why are we writing this line
    smallest = largest = s.substring(0, k);

    ReplyDelete
    Replies
    1. if s.length=k then it will not print anything that is why he use this line

      Delete
    2. smallest = largest = s.substring(0, k); this line is initializing the first set o substring in both so that it can be compared with the next one
      because of this only we have started loop from 1

      Delete
  3. i < s.length() - k
    explain please

    ReplyDelete
    Replies
    1. s.length() is the length of the string whereas k is the length of substring. If i(array index)<(length of string - length of substring) then the programs exicutes

      Delete

Error While embed the video in Your website page

Error:- Refused to display '<URL>' in a frame because it set 'X-Frame-Options' to 'sameorigin Solution:- if ...