Tuesday, April 12, 2022

Java String Compare

 Hackerrak Java String Compare By Java Tech Solutionz


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 .

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 .
The second line contains an integer denoting .

Constraints

  •  consists of English alphabetic letters only (i.e., [a-zA-Z]).

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:


public class Solution {

    public static String getSmallestAndLargest(String s, int k) {
        String smallest = "";
        String largest = "";
        
        // Complete the function
        // 'smallest' must be the lexicographically smallest substring of length 'k'
        // 'largest' must be the lexicographically largest substring of length 'k'
        
      
        
        int n=0;
        for(int i=0 ; i<=s.length()-k;i++){
            n++;
        }
        String arr[] = new String[n];
        
        for(int i=0 ; i<=s.length()-k;i++){
          
            arr[i]=s.substring(i,i+k);
        }
        arr = mySort(arr);
        System.out.println(arr[0]);
        System.out.println(arr[n-1]);
        
        return smallest + "\n" + largest;
    }
    
    public static String[] mySort(String[] ar) {
        
        String temp;
        
        for(int i=ar.length-1; i>0 ; i--) {
            for(int j=0;j<i;j++) {
                if(ar[j].compareTo(ar[j+1] )>0) {
                    temp = ar[j];
                    ar[j] = ar[j+1];
                    ar[j+1] = temp;
                }
            }
        }
    
        return ar;
    }


No comments:

Post a Comment

Concurrent Hashmap in java

  A ConcurrentHashMap is a thread-safe implementation of the Map interface in Java. Unlike a HashMap , which is not thread-safe and can ca...