Ruby - 遍历数组中的每个字符串并删除重复的字符

Posted

技术标签:

【中文标题】Ruby - 遍历数组中的每个字符串并删除重复的字符【英文标题】:Ruby - Iterate through each string inside an array and remove repeated characters 【发布时间】:2021-12-10 02:43:56 【问题描述】:

我需要单独从每个字符串中取出每个重复项,而不是从整个数组中取出。基本上我正在寻找的是数组中每个字符串的.uniq,而不是整个数组。

例子:

array = ["abc", "abc", "xxzzyyww", "aaaaa"]

预期输出:

["abc", "abc", "xzyw", "a"]

我尝试使用array.uniqarray.each.uniq,但他们没有单独考虑每个字符串,他们正在检查整个字符串是否在数组中重复,所以它给了我以下输出:

["abc", "ab", "xxzzyyww", "aaaaa"]

【问题讨论】:

请提供足够的代码,以便其他人更好地理解或重现问题。 您的示例使读者认为您关心的是连续消除两个相同的字符。如果您想将"aaba" 转换为"ab",您应该使用不同的示例。无论如何,您都需要进行编辑以澄清您的问题。 @Cary Swoveland 这个问题很清楚,当他说独特时,这也包括你给定的例子。 【参考方案1】:

如何使用string#squeeze (https://apidock.com/ruby/String/squeeze)

array = ["abc", "abc", "xxzzyyww", "aaaaa"]
# => ["abc", "abc", "xxzzyyww", "aaaaa"]

array.map |x| x.squeeze 
# => ["abc", "abc", "xzyw", "a"]

【讨论】:

或者简单地说:array.map(&:squeeze) 谢谢,它在大多数情况下都有效,但在其中一种情况下,我有一个字符串数组,如下所示:'qzbw qez xgedfibnyuhqsrazlwtpocj fxgpoqijdzybletckwaunsr'\ 'pwnqsizrfcbyljexgouatd ljtperqsodghnufiycxwabzw' 并且由于某种原因,它并没有消除每个重复项。 ..无法弄清楚为什么,寿。但是用.chars.uniq 替换.squeeze 就成功了。【参考方案2】:

输入

array = ["abc", "abc", "xxzzyyww", "aaaaa"]

代码

p array.map  _1.chars.uniq.join 

输出

["abc", "abc", "xzyw", "a"]

【讨论】:

谢谢!那个适用于每个数组中的每一个字符串。顺便问一下,_1 在这里有什么用处?这只是|x| x. 的另一种说法吗? 是的。你是对的。

以上是关于Ruby - 遍历数组中的每个字符串并删除重复的字符的主要内容,如果未能解决你的问题,请参考以下文章

如何遍历数组并根据字符串值删除项目[重复]

计算字符串中的字符数并删除重复项

swift 删除排序数组中的重复项

26. 删除有序数组中的重复项-一次遍历

比较数组中的值并删除 Ruby/Rails 中不同的项目

力扣算法笔记—1_删除排序数组中的重复项(数组)