📜  找到游戏的赢家

📅  最后修改于: 2022-05-13 01:57:06.882000             🧑  作者: Mango

找到游戏的赢家

两个玩家正在玩一个给定字符串str的游戏。第一个玩家可以选择偶数索引的字符,第二个玩家可以选择奇数索引的字符。能够比其他玩家构建字典上更小的字符串的玩家赢得游戏。打印游戏的获胜者,玩家AB或打印Tie (如果是平局)。
例子:

方法:分别为玩家A和B创建两个空字符串str1str2 。逐个字符遍历原始字符串,对于索引为偶数的每个字符,将此字符附加到str1字符字符到str2中。最后对生成的字符串进行排序,以获得字典上可能最小的字符串,并比较它们以找到游戏的获胜者。
下面是上述方法的实现:

C++
// C++ implementation of the approach
#include 
using namespace std;
 
// Function to find the winner of the game
void find_winner(string str, int n)
{
 
    // To store the strings for both the players
    string str1 = "", str2 = "";
    for (int i = 0; i < n; i++) {
 
        // If the index is even
        if (i % 2 == 0) {
 
            // Append the current character
            // to player A's string
            str1 += str[i];
        }
 
        // If the index is odd
        else {
 
            // Append the current character
            // to player B's string
            str2 += str[i];
        }
    }
 
    // Sort both the strings to get
    // the lexicographically smallest
    // string possible
    sort(str1.begin(), str1.end());
    sort(str2.begin(), str2.end());
 
    // Compare both the strings to
    // find the winner of the game
    if (str1 < str2)
        cout << "A";
    else if (str2 < str1)
        cout << "B";
    else
        cout << "Tie";
}
 
// Driver code
int main()
{
    string str = "geeksforgeeks";
    int n = str.length();
 
    find_winner(str, n);
 
    return 0;
}


Java
// Java implementation of the approach
import java.util.Arrays;
 
class GFG
{
 
// Function to find the winner of the game
static void find_winner(String str, int n)
{
 
    // To store the strings for both the players
    String str1 = "", str2 = "";
    for (int i = 0; i < n; i++)
    {
 
        // If the index is even
        if (i % 2 == 0)
        {
 
            // Append the current character
            // to player A's string
            str1 += str.charAt(i);
        }
 
        // If the index is odd
        else
        {
 
            // Append the current character
            // to player B's string
            str2 += str.charAt(i);
        }
    }
 
    // Sort both the strings to get
    // the lexicographically smallest
    // string possible
    char a[] = str1.toCharArray();
    Arrays.sort(a);
    char b[] = str2.toCharArray();
    Arrays.sort(b);
    str1 = new String(a);
    str2 = new String(b);
 
    // Compare both the strings to
    // find the winner of the game
    if (str1.compareTo(str2) < 0)
        System.out.print("A");
    else if (str1.compareTo(str2) > 0)
        System.out.print("B");
    else
        System.out.print("Tie");
}
 
// Driver code
public static void main(String[] args)
{
    String str = "geeksforgeeks";
    int n = str.length();
 
    find_winner(str, n);
}
}
 
// This code is contributed by Rajput-Ji


Python3
# Python3 implementation of the approach
 
# Function to find the winner of the game
def find_winner(string, n) :
 
    # To store the strings for both the players
    string1= ""; string2 = "";
    for i in range(n) :
 
        # If the index is even
        if (i % 2 == 0) :
 
            # Append the current character
            # to player A's string
            string1 += string[i];
         
        # If the index is odd
        else :
             
            # Append the current character
            # to player B's string
            string2 += string[i];
             
    # Sort both the strings to get
    # the lexicographically smallest
    # string possible
    string1 = "".join(sorted(string1))
    string2 = "".join(sorted(string2))
     
    # Compare both the strings to
    # find the winner of the game
    if (string1 < string2) :
        print("A", end = "");
         
    elif (string2 < string1) :
        print("B", end = "");
         
    else :
        print("Tie", end = "");
 
# Driver code
if __name__ == "__main__" :
 
    string = "geeksforgeeks";
    n = len(string);
 
    find_winner(string, n);
 
# This code is contributed by AnkitRai01


C#
// C# implementation of the approach
using System;
 
class GFG
{
 
// Function to find the winner of the game
static void find_winner(String str, int n)
{
 
    // To store the strings for both the players
    String str1 = "", str2 = "";
    for (int i = 0; i < n; i++)
    {
 
        // If the index is even
        if (i % 2 == 0)
        {
 
            // Append the current character
            // to player A's string
            str1 += str[i];
        }
 
        // If the index is odd
        else
        {
 
            // Append the current character
            // to player B's string
            str2 += str[i];
        }
    }
 
    // Sort both the strings to get
    // the lexicographically smallest
    // string possible
    char []a = str1.ToCharArray();
    Array.Sort(a);
    char []b = str2.ToCharArray();
    Array.Sort(b);
    str1 = new String(a);
    str2 = new String(b);
 
    // Compare both the strings to
    // find the winner of the game
    if (str1.CompareTo(str2) < 0)
        Console.Write("A");
    else if (str1.CompareTo(str2) > 0)
        Console.Write("B");
    else
        Console.Write("Tie");
}
 
// Driver code
public static void Main(String[] args)
{
    String str = "geeksforgeeks";
    int n = str.Length;
 
    find_winner(str, n);
}
}
 
// This code is contributed by Rajput-Ji


Javascript


输出:
B