删除重复项 - **只有当重复按顺序发生时 [英] removing duplicates - ** only when the duplicates occur in sequence

查看:173
本文介绍了删除重复项 - **只有当重复按顺序发生时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想做以下类似的操作,除了我只想删除g和g,因为它们是相互重复出现的重复项。我也想保持顺序一样。

I would like to do something similar to the following, except I would only like to remove 'g' and'g' because they are the duplicates that occur one after each other. I would also like to keep the sequence the same.

任何帮助将不胜感激!!!

Any help would be appreciated!!!

我在MATLAB中有这个单元格数组:

I have this cell array in MATLAB:

y = { 'd' 'f' 'a' 'g' 'g' 'w' 'a' 'h'}


ans =

'd'    'f'    'a'    'w'    'a'    'h'


推荐答案

我的第一个答案(下)发生错误用于多个重复(感谢grantnz)。这是一个更新版本:

There was an error in my first answer (below) when used on multiple duplicates (thanks grantnz). Here's an updated version:


>> y = { 'd' 'f' 'a' 'g' 'g' 'w' 'a' 'h' 'h' 'i' 'i' 'j'};
>> i = find(diff(char(y)) == 0);
>> y([i; i+1]) = []

y = 

    'd'    'f'    'a'    'w'    'a'    'j'






旧答案

如果您的单元格向量始终只包含单个字符元素,您可以执行以下操作:

If your "cell vector" always contains only single character elements you can do the following:


>> y = { 'd' 'f' 'a' 'g' 'g' 'w' 'a' 'h'}

y = 

    'd'    'f'    'a'    'g'    'g'    'w'    'a'    'h'

>> y(find(diff(char(y)) == 0) + [0 1]) = []

y = 

    'd'    'f'    'a'    'w'    'a'    'h'

这篇关于删除重复项 - **只有当重复按顺序发生时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆