[Swift]LeetCode293. 翻转游戏 $ Flip Game

You are playing the following Flip Game with your friend: Given a string that contains only these two characters: + and -, you and your friend take turns to flip twoconsecutive "++" into "--". The game ends when a person can no longer make a move and therefore the other person will be the winner.

Write a function to compute all possible states of the string after one valid move.

For example, given s = "++++", after one move, it may become one of the following states:

[ "--++",  "+--+",  "++--"] 

If there is no valid move, return an empty list [].



您正在和您的朋友玩以下翻转游戏:给定一个仅包含这两个字符的字符串:+和-,您和您的朋友轮流将两个插入“++”翻转为“--”。游戏结束时,一个人不能再做一个动作,因此另一个人将是赢家。

写一个函数来计算一次有效移动后字符串的所有可能状态。

例如,给定s=“+++++”,移动一次后,它可能成为以下状态之一:

[ "--++",  "+--+",  "++--"] 

如果没有有效的移动,请返回空列表[]。



Solution:

 1 class Solution {
 2     func generatePossibleNextMoves(_ s:String) ->[String] {
 3         var res:[String] = [String]()
 4         var arrS:[Character] = Array(s)
 5         for i in 1..<s.count
 6         {
 7             if arrS[i] == "+" && arrS[i - 1] == "+"
 8             {
 9                 res.append(s.subString(0, i - 1) + "--" + s.subString(i + 1))
10             }
11         }
12         return res
13     }
14 }
15
16 extension String {
17     // 截取字符串:从index到结束处
18     // - Parameter index: 开始索引
19     // - Returns: 子字符串
20     func subString(_ index: Int) -> String {
21         let theIndex = self.index(self.endIndex, offsetBy: index - self.count)
22         return String(self[theIndex..<endIndex])
23     }
24
25     // 截取字符串:指定索引和字符数
26     // - begin: 开始截取处索引
27     // - count: 截取的字符数量
28     func subString(_ begin:Int,_ count:Int) -> String {
29         let start = self.index(self.startIndex, offsetBy: max(0, begin))
30         let end = self.index(self.startIndex, offsetBy:  min(self.count, begin + count))
31         return String(self[start..<end])
32     }
33 }

原文地址:https://www.cnblogs.com/strengthen/p/10692426.html

时间: 2024-10-12 11:25:42

[Swift]LeetCode293. 翻转游戏 $ Flip Game的相关文章

[LeetCode] Flip Game 翻转游戏

You are playing the following Flip Game with your friend: Given a string that contains only these two characters: + and -, you and your friend take turns to flip twoconsecutive "++" into "--". The game ends when a person can no longer

914. 翻转游戏

914. 翻转游戏 中文English You are playing the following Flip Game with your friend: Given a string that contains only two characters: + and -, you can flip two consecutive "++" into "--", you can only flip one time. Please find all strings t

codevs 2946 翻转游戏

2946 翻转游戏 题目描述 Description 现有n个数字a1,a2...an,其值均为0或1. 要求对着n个数中连续的若干个数进行一次取反(0->1,1->0),求所能得到的最多的1的数目. 输入描述 Input Description 第一行,n 第二行,n个数 输出描述 Output Description 能得到的最多的1的数目 样例输入 Sample Input 41 0 0 1 样例输出 Sample Output 4 数据范围及提示 Data Size & Hin

swift 拼图小游戏

根据这位朋友的拼图小游戏改编 http://tangchaolizi.blog.51cto.com/3126463/1571616 改编主要地方是: 原本着我仁兄的代码时支持拖动小图块来移动的,我参照之前自己java当初写的,其实不需要拖动,因为只有一个空出来地方,那么通过点击事件,接受到点击事件的小图只能向一个方向移动或者不能移动. 通过对这个游戏的学习,我也算是第一次用swift写一个有用的代码,大家互相学习. 代码下载位置 版权声明:本文为博主原创文章,未经博主允许不得转载.

[Swift]LeetCode493. 翻转对 | Reverse Pairs

Given an array nums, we call (i, j) an important reverse pair if i < j and nums[i] > 2*nums[j]. You need to return the number of important reverse pairs in the given array. Example1: Input: [1,3,2,3,1] Output: 2  Example2: Input: [2,4,3,5,1] Output:

翻转游戏

原题链接 解法一:枚举+搜索 #include<bits/stdc++.h> using namespace std; int len; string S; bool search(bool state[]) { for(int i=0;i<len-1;i++){ if(state[i]&&state[i+1]){ state[i]=false; state[i+1]=false; if(!search(state)){ state[i]=true; state[i+1]

Luogu P1764翻转游戏

我代码能力可能有一定的了,要不然不能一遍写出来吧.. 要注意无解的处理! 1 #include<iostream> 2 #include<cstdio> 3 4 using namespace std; 5 6 int a[20][20]; 7 int n,ans = -1,k,cnt0; 8 char ch; 9 10 void print(){ 11 cout << endl; 12 for(int i = 1;i <= n;i++){ 13 for(int

图像的读取、缩放、平移、旋转、翻转、仿射、透射

1 import cv2 2 import numpy as np 3 import matplotlib.pyplot as plt 4 5 # 在读取图片中,imread('图片地址','模式参数')函数可以来控制所读取图片的模式. 6 # 模式参数: 7 # 0:读入的为灰度图像(即使读入的为彩色图像也将转化为灰度图像) 8 # 1:读入的为彩色图像(默认) 9 10 # img=cv2.imread('girl.jpg',0) 11 # 数组 12 # print(img) 13 # 图

iOS核心面试题

1,请简述你对协议的理解?    protocol无论是在那个领域都是一种约束,规范.在OC中的协议主要用于在各个类之间进行回调传值. 协议有 委托方,代理方, 委托方是协议的制定者,需要声明协议的方法,实现协议的对象.代理方,是协议的遵守着,需要遵守协议,并实现协议中的必要方法. 2,如何理解ARC自动引用计数机制? Cocoa采用了引用计数(referencecounting)机制,每一个对象有一个关联的“整数retainCount”用于记录对象的使用情况.对象被引用时retaincount