293. Flip Game

LeetCode easy original: C# #array #csharp #easy #leetcode #queue #string #tree
O texto da tarefa é traduzido do russo para o idioma selecionado. O código permanece sem alterações.

Вы играете в игру Flip со своим другом.

Вам дана string currentState, которая содержит только символы '+' и '-'. Вы и ваш друг по очереди переворачиваете две последовательные "++" в "--". Игра заканчивается, когда один из игроков больше не может сделать ход, и, следовательно, другой игрок становится победителем.

return все возможные состояния строки currentState после одного допустимого хода. Вы можете вернуть ответы в любом порядке. Если допустимых ходов нет, return пустой список [].

Exemplo:

Input: currentState = "++++"

Output: ["--++","+--+","++--"]

C# solução

correspondente/original
using System;
using System.Collections.Generic;
public class Solution {
    public IList<string> GeneratePossibleNextMoves(string currentState) {
        var nextPossibleStates = new List<string>();
        for (int index = 0; index < currentState.Length - 1; index++) {
            if (currentState[index] == '+' && currentState[index + 1] == '+') {
                string nextState = currentState.Substring(0, index) + "--" + currentState.Substring(index + 2);
                nextPossibleStates.Add(nextState);
            }
        }
        return nextPossibleStates;
    }
}

C++ solução

rascunho automático, revisar antes de enviar
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    public vector<string> GeneratePossibleNextMoves(string currentState) {
        var nextPossibleStates = new List<string>();
        for (int index = 0; index < currentState.size() - 1; index++) {
            if (currentState[index] == '+' && currentState[index + 1] == '+') {
                string nextState = currentState.Substring(0, index) + "--" + currentState.Substring(index + 2);
                nextPossibleStates.push_back(nextState);
            }
        }
        return nextPossibleStates;
    }
}

Java solução

correspondente/original
import java.util.ArrayList;
import java.util.List;

public class Solution {
    public List<String> generatePossibleNextMoves(String currentState) {
        List<String> nextPossibleStates = new ArrayList<>();

        for (int index = 0; index < currentState.length() - 1; index++) {
            if (currentState.charAt(index) == '+' && currentState.charAt(index + 1) == '+') {
                String nextState = currentState.substring(0, index) + "--" + currentState.substring(index + 2);
                nextPossibleStates.add(nextState);
            }
        }

        return nextPossibleStates;
    }
}

JavaScript solução

correspondente/original
class Solution {
    generatePossibleNextMoves(currentState) {
        const nextPossibleStates = [];

        for (let i = 0; i < currentState.length - 1; i++) {
            if (currentState[i] === '+' && currentState[i + 1] === '+') {
                const nextState = currentState.slice(0, i) + "--" + currentState.slice(i + 2);
                nextPossibleStates.push(nextState);
            }
        }

        return nextPossibleStates;
    }
}

Python solução

correspondente/original
class Solution:
    def generatePossibleNextMoves(self, currentState: str) -> list[str]:
        nextPossibleStates = []

        for index in range(len(currentState) - 1):
            if currentState[index] == "+" and currentState[index + 1] == "+":
                nextState = currentState[:index] + "--" + currentState[index + 2:]
                nextPossibleStates.append(nextState)

        return nextPossibleStates

Go solução

correspondente/original
package main

func generatePossibleNextMoves(currentState string) []string {
    var nextPossibleStates []string

    for i := 0; i < len(currentState)-1; i++ {
        if currentState[i] == '+' && currentState[i+1] == '+' {
            nextState := currentState[:i] + "--" + currentState[i+2:]
            nextPossibleStates = append(nextPossibleStates, nextState)
        }
    }

    return nextPossibleStates
}

Algorithm

Создайте пустой array nextPossibleStates для хранения всех возможных следующих состояний после одного хода.

Запустите цикл от index = 0 до currentState.size() - 1. Для каждого индекса:

Если символы на позициях index и index + 1 равны '+':

Создайте новую строку nextState, заменив две последовательные '+' на '--'.

Используйте конкатенацию строк для создания nextState из подстроки до первого '+', "--" и подстроки после второго '+' до конца.

Сохраните созданное nextState в array nextPossibleStates.

После цикла return array nextPossibleStates, содержащий все возможные следующие состояния.

😎

Vacancies for this task

vagas ativas with overlapping task tags are mostradas.

Todas as vagas
Ainda não há vagas ativas.