Substring máxima lexicográfica de string

Dada una string s tenemos que encontrar la substring máxima lexicográfica de una string

Ejemplos: 

C++

// CPP program to find the lexicographically
// maximum substring.
#include <bits/stdc++.h>
using namespace std;
  
string LexicographicalMaxString(string str)
{
    // loop to find the max lexicographic
    // substring in the substring array
    string mx = "";
    for (int i = 0; i < str.length(); ++i)
        mx = max(mx, str.substr(i));
  
    return mx;
}
  
// Driver code
int main()
{
    string str = "ababaa";
    cout << LexicographicalMaxString(str);
    return 0;
}

Java

// Java program to find the lexicographically
// maximum substring.
  
class GFG {
  
    static String LexicographicalMaxString(String str)
    {
        // loop to find the max lexicographic
        // substring in the substring array
        String mx = "";
        for (int i = 0; i < str.length(); ++i) {
            if (mx.compareTo(str.substring(i)) <= 0) {
                mx = str.substring(i);
            }
        }
  
        return mx;
    }
  
    // Driver code
    public static void main(String[] args)
    {
        String str = "ababaa";
        System.out.println(LexicographicalMaxString(str));
    }
}
// This code is contributed by 29AjayKumar

Python3

# Python 3 program to find the
# lexicographically maximum substring.
def LexicographicalMaxString(str):
      
    # loop to find the max lexicographic 
    # substring in the substring array
    mx = ""
    for i in range(len(str)):
        mx = max(mx, str[i:])
  
    return mx
  
# Driver code
if __name__ == '__main__':
    str = "ababaa"
    print(LexicographicalMaxString(str))
      
# This code is contributed by
# Sanjit_Prasad

C#

// C# program to find the lexicographically
// maximum substring.
  
using System;
public class GFG {
  
    static String LexicographicalMaxString(String str)
    {
        // loop to find the max lexicographic
        // substring in the substring array
        String mx = "";
        for (int i = 0; i < str.Length; ++i) {
            if (mx.CompareTo(str.Substring(i)) <= 0) {
                mx = str.Substring(i);
            }
        }
  
        return mx;
    }
  
    // Driver code
    public static void Main()
    {
        String str = "ababaa";
        Console.WriteLine(LexicographicalMaxString(str));
    }
}
  
// This code is contributed by 29AjayKumar

Javascript

<script>
  
// JavaScript program to find the lexicographically
// maximum substring.
   function LexicographicalMaxString(str)
    {
        // loop to find the max lexicographic
    // substring in the substring array
    var mx = "";
    for (var i = 0; i < str.length; ++i) {
        if (mx.localeCompare(str.substring(i)) <= 0) {
            mx = str.substring(i);
        }
    }
  
    return mx;
}
  
// Driver code
   var str = "ababaa";
   document.write(LexicographicalMaxString(str));
  
// This code is contributed by 29AjayKumar 
  
</script>

C++

// C++ program to find the lexicographically
// maximum substring.
#include <bits/stdc++.h>
using namespace std;
  
string LexicographicalMaxString(string str)
{
    char maxchar = 'a';
    vector<int> index;
  
    // We store all the indexes of maximum
    // characters we have in the string
    for (int i = 0; i < str.length(); i++) {
        if (str[i] >= maxchar) {
            maxchar = str[i];
            index.push_back(i);
        }
    }
    string maxstring = "";
  
    // We form a substring from that maximum
    // character index till end and check if
    // its greater that maxstring
    for (int i = 0; i < index.size(); i++) {
        if (str.substr(index[i], str.length()) > maxstring) {
            maxstring = str.substr(index[i], str.length());
        }
    }
    return maxstring;
}
  
// Driver code
int main()
{
    string str = "acbacbc";
    cout << LexicographicalMaxString(str);
    return 0;
}

Java

// Java program to find the lexicographically
// maximum substring.
import java.io.*;
import java.util.*;
class GFG
{    
  static String LexicographicalMaxString(String str)
  {
    char maxchar = 'a';
    ArrayList<Integer> index = new ArrayList<Integer>(); 
  
    // We store all the indexes of maximum
    // characters we have in the string
    for (int i = 0; i < str.length(); i++) 
    {
      if (str.charAt(i) >= maxchar)
      {
        maxchar = str.charAt(i);
        index.add(i);
      }
    }
    String maxstring = "";
  
    // We form a substring from that maximum
    // character index till end and check if
    // its greater that maxstring
    for (int i = 0; i < index.size(); i++) 
    {
      if (str.substring(index.get(i), 
                        str.length()).compareTo( maxstring) > 0)
      {
        maxstring = str.substring(index.get(i), 
                                  str.length());
      }
    }
    return maxstring;
  }
  
  // Driver code
  public static void main (String[] args) 
  {    
    String str = "acbacbc";   
    System.out.println(LexicographicalMaxString(str));
  }
}
  
// This code is contributed by rag2127.

Python3

# Python 3 program to find 
# the lexicographically
# maximum substring.
def LexicographicalMaxString(st):
  
    maxchar = 'a'
    index = []
  
    # We store all the indexes 
    # of maximum characters we 
    # have in the string
    for i in range(len(st)):
        if (st[i] >= maxchar):
            maxchar = st[i]
            index.append(i)
  
    maxstring = ""
  
    # We form a substring from that 
    # maximum character index till 
    # end and check if its greater
    # that maxstring
    for i in range(len(index)):
        if (st[index[i]: len(st)] > 
            maxstring):
            maxstring = st[index[i]: 
                        len(st)]
    return maxstring
  
# Driver code
if __name__ == "__main__":
  
    st = "acbacbc"
    print(LexicographicalMaxString(st))
  
# This code is contributed by Chitranayal

C#

// C# program to find the lexicographically
// maximum substring.
using System;
using System.Collections.Generic;
  
class GFG{
      
static string LexicographicalMaxString(string str)
{
    char maxchar = 'a';
    List<int> index = new List<int>(); 
      
    // We store all the indexes of maximum
    // characters we have in the string
    for(int i = 0; i < str.Length; i++) 
    {
        if (str[i] >= maxchar)
        {
            maxchar = str[i];
            index.Add(i);
        }
    }
    string maxstring = "";
      
    // We form a substring from that maximum
    // character index till end and check if
    // its greater that maxstring
    for(int i = 0; i < index.Count; i++) 
    {
        if (str.Substring(index[i]).CompareTo(maxstring) > 0)
        {
            maxstring = str.Substring(index[i]);
        }
    }
    return maxstring;
}
  
// Driver code
static public void Main()
{
    string str = "acbacbc";
      
    Console.Write(LexicographicalMaxString(str));
}
}
  
// This code is contributed by avanitrachhadiya2155

Javascript

<script>
// Javascript program to find the lexicographically
// maximum substring.
  
function LexicographicalMaxString(str)
{
    let maxchar = 'a';
    let index = [];
      
    // We store all the indexes of maximum
    // characters we have in the string
    for (let i = 0; i < str.length; i++)
    {
      if (str[i] >= maxchar)
      {
        maxchar = str[i];
        index.push(i);
      }
    }
    let maxstring = "";
   
    // We form a substring from that maximum
    // character index till end and check if
    // its greater that maxstring
    for (let i = 0; i < index.length; i++)
    {
      if (str.substring(index[i],
                        str.length) > maxstring)
      {
        maxstring = str.substring(index[i],
                                  str.length);
      }
    }
    return maxstring;
}
  
// Driver code
let str = "acbacbc";  
document.write(LexicographicalMaxString(str));
  
// This code is contributed by ab2127
</script>

Publicación traducida automáticamente

Artículo escrito por Surya Priy y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *