找到游戏的赢家
两个玩家正在玩一个给定字符串str的游戏。第一个玩家可以选择偶数索引的字符,第二个玩家可以选择奇数索引的字符。能够比其他玩家构建字典上更小的字符串的玩家赢得游戏。打印游戏的获胜者,玩家A 、 B或打印Tie (如果是平局)。
例子:
Input: str = “geeksforgeeks”
Output: B
“eeggoss” is the lexicographically smallest
string that player A can get.
“eefkkr” is the lexicographically smallest
string that player B can get.
And B’s string is lexicographically smaller.
Input: str = “abcdbh”
Output: A
方法:分别为玩家A和B创建两个空字符串str1和str2 。逐个字符遍历原始字符串,对于索引为偶数的每个字符,将此字符附加到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