Compruebe si la string se puede hacer lexicográficamente más pequeña invirtiendo cualquier substring

Dada una string S , la tarea es verificar si podemos hacer la string lexicográficamente más pequeña invirtiendo cualquier substring de la string dada. 

Ejemplos:  

Entrada: S = «striver» 
Salida: Sí 
Invierta «rive» para obtener «stevirr», que es lexicográficamente más pequeño. 
Entrada: S = “rxz” 
Salida: No  

Enfoque : iterar en la string y verificar si hay algún índice s[i] > s[i + 1] . Si existe al menos uno de esos índices, entonces es posible que no lo sea. 
A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function that returns true if s
// can be made lexicographically smaller
// by reversing a sub-string in s
bool check(string s)
{
    int n = s.size();
 
    // Traverse in the string
    for (int i = 0; i < n - 1; i++) {
 
        // Check if s[i+1] < s[i]
        if (s[i] > s[i + 1])
            return true;
    }
 
    // Not possible
    return false;
}
 
// Driver code
int main()
{
    string s = "geeksforgeeks";
 
    if (check(s))
        cout << "Yes";
    else
        cout << "No";
 
    return 0;
}

Java

// Java implementation of the approach
class GFG
{
 
// Function that returns true if s
// can be made lexicographically smaller
// by reversing a sub-string in s
static boolean check(String s)
{
    int n = s.length();
 
    // Traverse in the string
    for (int i = 0; i < n - 1; i++)
    {
 
        // Check if s[i+1] < s[i]
        if (s.charAt(i) > s.charAt(i + 1))
            return true;
    }
 
    // Not possible
    return false;
}
 
// Driver code
public static void main(String args[])
{
    String s = "geeksforgeeks";
 
    if (check(s))
        System.out.println("Yes");
    else
        System.out.println("No");
 
}
}
 
// This code is contributed by Arnab Kundu

Python3

# Python 3 implementation of the approach
 
# Function that returns true if s
# can be made lexicographically smaller
# by reversing a sub-string in s
def check(s):
    n = len(s)
 
    # Traverse in the string
    for i in range(n-1):
         
        # Check if s[i+1] < s[i]
        if (s[i] > s[i + 1]):
            return True
 
    # Not possible
    return False
 
# Driver code
if __name__ == '__main__':
    s = "geeksforgeeks"
 
    if (check(s)):
        print("Yes")
    else:
        print("No")
 
# This code is contributed by
# Surendra_Gangwar

C#

// C# implementation of the approach
using System;
 
class GFG
{
 
// Function that returns true if s
// can be made lexicographically smaller
// by reversing a sub-string in s
static bool check(String s)
{
    int n = s.Length;
 
    // Traverse in the string
    for (int i = 0; i < n - 1; i++)
    {
 
        // Check if s[i+1] < s[i]
        if (s[i] > s[i + 1])
            return true;
    }
 
    // Not possible
    return false;
}
 
// Driver code
public static void Main(String []args)
{
    String s = "geeksforgeeks";
 
    if (check(s))
        Console.WriteLine("Yes");
    else
        Console.WriteLine("No");
 
}
}
 
// This code has been contributed by 29AjayKumar

PHP

<?php
// PHP implementation of the approach
 
// Function that returns true if s
// can be made lexicographically smaller
// by reversing a sub-string in s
 
function check($s)
{
    $n = strlen($s);
 
    // Traverse in the string
    for ($i = 0; $i < $n - 1; $i++)
    {
 
        // Check if $s[$i+1] < $s[$i]
        if ($s[$i] > $s[$i + 1])
            return true;
    }
 
    // Not possible
    return false;
}
 
    // Driver code
    $s = "geeksforgeeks";
 
    if (check($s))
    echo "Yes";
    else
        echo "No";
 
// This code is contributed by jit_t
?>

Javascript

<script>
    // Javascript implementation of the approach
     
    // Function that returns true if s
    // can be made lexicographically smaller
    // by reversing a sub-string in s
    function check(s)
    {
        let n = s.length;
 
        // Traverse in the string
        for (let i = 0; i < n - 1; i++)
        {
 
            // Check if s[i+1] < s[i]
            if (s[i] > s[i + 1])
                return true;
        }
 
        // Not possible
        return false;
    }
     
    let s = "geeksforgeeks";
   
    if (check(s))
        document.write("Yes");
    else
        document.write("No");
 
</script>
Producción: 

Yes

 

Complejidad de tiempo: O(N)

Espacio Auxiliar: O(N)

Publicación traducida automáticamente

Artículo escrito por Striver 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 *