从字符分组创建新数组?

时间:2016-08-26 02:56:20

标签: arrays swift string filter uniq

我的输出类似于下面显示的内容:

  

RRRYYYYYGGYGGGGGYRRRRRYYYYGBBBGYYYYYRRRRYYYYGBBBBYYYYYRRRRYYYYGBBBBRRRRRRRRRRRRRYBBBBGGGGGGGGGRRRRGGGGGGGGGGBBBBBBBBBRRRRGGGGGBBBBBBBBBGYGGBBBBBGGYRBBBBBGGGGBBBBGGGGGBBBBGGYYGBBBBGGGGGBBBBRRRRGGGGGBBBYYYRGGGGYYYYYYYYYYYYGGYYYGGGBGGYYYYGGGGGBBBBBBBBGYRYYGGGGGBBBBBBBBGYRYGGGGGGGGGGBBBBBGGGGGGGGGBBBBBBRRRRRRRYYYYYYYYYYYYYYYYYYRRRRYYYYYGGGGGYYYYYYYYYYYYYRYYYRRRGGYYYYYYYYYRRRRGRRRRYYYYYYYYYRRRRRYYYYYYY

我希望创建一个新的字符串或数组,根据其分组列出字符。例如,新数组将开始如下:RYGGRYBYR ....有些字母是错误的,不应该被考虑,例如第6个' Y'。我该怎么办呢?如果您希望我澄清我的目标,请发表评论。感谢。

1 个答案:

答案 0 :(得分:1)

试试这样:

let input = "RRRYYYYYGGYGGGGGYRRRRRYYYYGBBBGYYYYYRRRRYYYYGBBBBYYYYYRRRRYYYYGBBBBRRRRRRRRRRRRRYBBBBGGGGGGGGGRRRRGGGGGGGGGGBBBBBBBBBRRRRGGGGGBBBBBBBBBGYGGBBBBBGGYRBBBBBGGGGBBBBGGGGGBBBBGGYYGBBBBGGGGGBBBBRRRRGGGGGBBBYYYRGGGGYYYYYYYYYYYYGGYYYGGGBGGYYYYGGGGGBBBBBBBBGYRYYGGGGGBBBBBBBBGYRYGGGGGGGGGGBBBBBGGGGGGGGGBBBBBBRRRRRRRYYYYYYYYYYYYYYYYYYRRRRYYYYYGGGGGYYYYYYYYYYYYYRYYYRRRGGYYYYYYYYYRRRRGRRRRYYYYYYYYYRRRRRYYYYYYY"
var result: [Character] = []
var lastChar: Character?
var repetitions = 0
for char in input.characters {
    if char == lastChar {
        repetitions += 1
    } else {
        repetitions = 0
    }
    if repetitions == 1 {
        result.append(char)
    }
    lastChar = char
}

print(String(result))  // "RYGGRYBYRYBYRYBRBGRGBRGBGBGBGBGBGYBGBRGBYGYGYGGYGBYGBGBGBRYRYGYYRGYRRYRY\n"