Java Substring Comparisons

Sort by

recency

|

1774 Discussions

|

  • + 0 comments

    public class Solution {

    public static void main(String[] args) {
     Scanner sc=new Scanner(System.in);
     String str=sc.next(); 
     int len=sc.nextInt();
      int n=str.length();
     String[] nstr=new String[n-(len-1)];
    

    for(int i=0;i

    Arrays.sort(nstr); System.out.println(nstr[0]); System.out.println(nstr[n-len]); }

    }
    
  • + 0 comments
    import java.util.*;
    
    public class Solution {
    
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            String s = scanner.nextLine();
            int k = scanner.nextInt();
            scanner.close();
            
            List<String> substrings = new ArrayList<>();
            
            for (int i = 0; i <= s.length() - k; i++) {
                substrings.add(s.substring(i, i + k));
            }
            
            Collections.sort(substrings);
            
            System.out.println(substrings.get(0) + "\n" + substrings.get(substrings.size() - 1));
        }
    }
    
  • + 0 comments

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

            int n = s.length()-k + 1;
            String[] arr = new String[n];
    
            for(int i=0; i<=s.length()-k; i++){
                    arr[i] = s.substring(i, i+k);
            }
    
            smallest = arr[0];
            largest = arr[0];
            for(int i=1; i<arr.length; i++){
                    if(arr[i].compareTo(smallest) < 0){
                            smallest = arr[i];
                            // largest = arr[i];
                    }else if(arr[i].compareTo(largest) > 0){
                            // largest = smallest;
                            largest = arr[i];
                    }
            }
            // Complete the function
            // 'smallest' must be the lexicographically smallest substring of length 'k'
            // 'largest' must be the lexicographically largest substring of length 'k'
    
            return smallest + "\n" + largest;
    }
    
  • + 0 comments

    Simple 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 subs  = s.substring(i, i+k);
                
                if(subs.compareTo(smallest)<0){
                   smallest = subs; 
                }
                  if(subs.compareTo(largest)>0){
                   largest = subs; 
                }
                
                
            }
            
            return smallest + "\n" + largest;
        }
    
  • + 0 comments

    import java.util.stream.Collectors; import java.util.stream.IntStream;

    public class Solution { public static String getSmallestAndLargest(String s, int k) {

        // Complete the function
        // 'smallest' must be the lexicographically smallest substring of length 'k'
        // 'largest' must be the lexicographically largest substring of length 'k'
    
        List<String> subStrings = IntStream.range(0, s.length() - k + 1)
                        .mapToObj(i -> s.substring(i, i + k))
                        .sorted()
                        .collect(Collectors.toList());
    
        String smallest = subStrings.get(0);
        String largest = subStrings.get(subStrings.size() - 1);
    
        return smallest + "\n" + largest;
    }