Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save AbdullahMagat/dd823ea3a4041626d1369875e610bda1 to your computer and use it in GitHub Desktop.
Save AbdullahMagat/dd823ea3a4041626d1369875e610bda1 to your computer and use it in GitHub Desktop.
Hackerrank Java Substring Comparisons
import java.util.Scanner;
public class Solution {
public static String getSmallestAndLargest(String s, int k) {
String smallest = "";
String largest = "";
smallest = s.substring(0,k);
largest = s.substring(0,k);
// "Compare to" method doesn't turn just the equel case it also turns a value.
for(int i=0; i<=s.length()-k; i++ ){
String str = s.substring(i,k+i);
if (smallest.compareTo(str)>0){
smallest = str;
}
if(largest.compareTo(str)<0){
largest=str;
}
}
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));
}
}
@Rieyanshi
Copy link

Should be
String smallest = s.substring(0,k+1);
String largest = s.substring(s.length()-k);

@Anjaneekumar
Copy link

Do anyone have list of all test cases ?
String Comparision Java - HackerRank

@Anjaneekumar
Copy link

we save one iteration by using i=1 instead of i=0;

@adhikari-sakar
Copy link

adhikari-sakar commented Mar 31, 2023

What about this?

public static String getSmallestAndLargest(String s, int k) {
		List<String> subs = new ArrayList<>();
		for (int i = 0; i < s.length(); i++) {
			if (k > s.length()) {
				break;
			}
			subs.add( s.substring(i, k));
			k++;
		}
		subs = subs.stream().sorted().collect(Collectors.toList());
		return subs.get(0) + "\n" + subs.get(subs.size() - 1);
	}

@mstgdk
Copy link

mstgdk commented Aug 27, 2023

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

    ArrayList<String> st = new ArrayList<>();
    int s_len = s.length();
    for (int i =0; i<=s_len-k; i++){
        String sk = s.substring(i,i+k);
        st.add(sk);
    }
   
    smallest = Collections.min(st);
    largest = Collections.max(st);

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment