📌  相关文章
📜  通过插入给定字符可能在字典上最小的字符串

📅  最后修改于: 2021-04-21 20:51:21             🧑  作者: Mango

给定字符串S和字符C ,任务是将字符放置在字符串中,使得获得的字符串是词典上最小的字符串。

例子:

方法:想法是将字符放在字典上比字符串的字符C大的第一个字符之前。如果在字符串中未找到任何字符是大于C,在结尾处的字符。

下面是上述方法的实现:

C++
// C++ Program to implement the
// above approach
#include 
using namespace std;
 
// Function to obtain lexicographically
// smallest string possible by inserting
// character c in the string s
string SmallestString(string s, char c)
{
 
    // Traverse the string
    for (int i = 0; i < s.size(); i++) {
 
        // If the current character is greater
        // than the given character
        if (s[i] > c) {
 
            // Insert the character before
            // the greater character
            s.insert(i, 1, c);
 
            // Return the string
            return s;
        }
    }
 
    // Append the character at the end
    s += c;
 
    // Return the string
    return s;
}
 
// Driver Code
int main()
{
    string S = "acd";
    char C = 'b';
 
    cout << SmallestString(S, C) << endl;
 
    return 0;
}


Java
// Java program to implement the
// above approach
import java.util.*;
 
class GFG{
 
// Function to obtain lexicographically
// smallest String possible by inserting
// character c in the String s
static String SmallestString(String s, char c)
{
     
    // Traverse the String
    for(int i = 0; i < s.length(); i++)
    {
         
        // If the current character is greater
        // than the given character
        if (s.charAt(i) > c)
        {
             
            // Insert the character before
            // the greater character
            String temp = s;
            s = s.substring(0, i);
            s += c;
            s += temp.substring(i, temp.length());
             
            // Return the String
            return s;
        }
    }
     
    // Append the character at the end
    s += c;
     
    // Return the String
    return s;
}
 
// Driver Code
public static void main(String args[])
{
    String S = "acd";
    char C = 'b';
     
    System.out.println(SmallestString(S, C));
}
}
 
// This code is contributed by ipg2016107


Python3
# Python3 Program to implement
# the above approach
 
# Function to obtain lexicographically
# smallest string possible by inserting
# character c in the string s
def SmallestString(s, c):
 
    i = 0
 
    # Traverse the string
    while(i < len(s)):
 
      # Check if current character is
      # greater than the given character
        if s[i] > c:
 
            # Insert the character before
            # the first greater character
            s = s[:i] + c + s[i:]
 
            # Return the string
            return s
        i = i + 1
 
    # Append the character at the end
    s = s + c
 
    # Return the string
    return s
 
 
S = 'abd'
C = 'c'
 
# Function call
print(SmallestString(S, C))


C#
// C# program to implement the
// above approach
using System;
 
class GFG{
     
// Function to obtain lexicographically
// smallest String possible by inserting
// character c in the String s
static String SmallestString(String s, char c)
{
     
    // Traverse the String
    for(int i = 0; i < s.Length; i++)
    {
         
        // If the current character is greater
        // than the given character
        if (s[i] > c)
        {
             
            // Insert the character before
            // the greater character
            String temp = s;
            s = s.Substring(0, i);
            s += c;
            s += temp.Substring(i, temp.Length - 1);
             
            // Return the String
            return s;
        }
    }
     
    // Append the character at the end
    s += c;
     
    // Return the String
    return s;
}
 
// Driver Code
public static void Main(String []args)
{
    String S = "acd";
    char C = 'b';
     
    Console.WriteLine(SmallestString(S, C));
}
}
 
// This code is contributed by aashish1995


输出:
abcd

时间复杂度: O(len(str))
辅助空间: O(1)