Java Substring Comparisons

Sort by

recency

|

1762 Discussions

|

  • + 0 comments

    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=s.length();
    smallest=s.substring(0,k);
    largest=s.substring(0,k);
    
    for(int i=0;i<n-k;i++) //selection sort
    {
        String sm = s.substring(i,i+k);
        String lg = s.substring(i,i+k);
        for(int j=i+1;j<n+1-k;j++) {
            String t = s.substring(j,j+k);
            if(t.compareTo(sm)<=0) 
                sm=t;
            if(t.compareTo(lg)>=0)
                lg = t;
        }
        if(sm.compareTo(smallest)<=0)
            smallest=sm;
        if(lg.compareTo(largest)>=0)
            largest=lg;
    }
    
    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

    Used selection sort(kinda) import java.util.Scanner;

    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=s.length();
        smallest=s.substring(0,k);
        largest=s.substring(0,k);
    
        for(int i=0;i<n-k;i++) //selection sort
        {
            String sm = s.substring(i,i+k);
            String lg = s.substring(i,i+k);
            for(int j=i+1;j<n+1-k;j++) {
                String t = s.substring(j,j+k);
                if(t.compareTo(sm)<=0) 
                    sm=t;
                if(t.compareTo(lg)>=0)
                    lg = t;
            }
            if(sm.compareTo(smallest)<=0)
                smallest=sm;
            if(lg.compareTo(largest)>=0)
                largest=lg;
        }
    
        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

    Using "Sliding Window Technique"

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

        for(int i=1; i <= s.length()-k; i++) {
            if(smallest.compareTo(s.substring(i, k+i)) > 0) {
                smallest = s.substring(i, k+i);
            }
            if(largest.compareTo(s.substring(i, k+i)) < 0) {
                largest = s.substring(i, k+i);
            }
        }
    
        return smallest + "\n" + largest;
    }
    
  • + 0 comments

    solution

    import java.util.Scanner;

    public class Solution {

    public static String getSmallestAndLargest(String s, int k) {
        String smallest = s.substring(0,k);
        String largest = s.substring(0,k);
    
        for(int i=0;i<=s.length()-k;i++){
            String subString=s.substring(i,i+k);
            if(subString.compareTo(smallest)<0){
                smallest=subString;
            }
            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

    public static String getSmallestAndLargest(String s, int k) { int length = s.length(); // initialize with the first substring String smallest = s.substring(0, k); String largest = s.substring(0, k);

        for (int i = 0; i <= length - k; i++) {
            String subStr = s.substring(i, i + k);
            if (subStr.compareTo(smallest) < 0) {
                smallest = subStr;
            }
            if (subStr.compareTo(largest) > 0) {
                largest = subStr;
            }
        }        
        return smallest + "\n" + largest;
    }