【发布时间】:2013-10-13 08:44:15
【问题描述】:
我有一个字符串和一个字符串元胞数组。
str = 'actaz';
dic = {'aaccttzz', 'ac', 'zt', 'ctu', 'bdu', 'zac', 'zaz', 'aac'};
我要获取:
idx = [2, 3, 6, 8];
我写了一段很长的代码:
- 查找长度不大于length(str)的元素;
- 删除str中不包含字符的元素;
- 最后,对于剩余的每个元素,逐一检查字符
本质上,这是一个几乎是蛮力的代码,运行速度非常慢。我想知道是否有一种简单的方法可以快速完成。
注意:我刚刚编辑了这个问题,以明确如果字符在 str 中出现 n 次,它们可以重复 n 次。感谢 Shai 指出。
【问题讨论】:
-
'aac'是否适合您?'a'在str中出现两次? -
可以只做第3步,将
dic中出现的字符从str中一一删除。我认为还有一些方法可以使用intersect、setxor、ismember等... -
是的,'aac' 是有效的,因为 str 有两个 'a'。
-
我尝试过使用ismember和intersect,但是一直没有找到解决办法。无论如何,第 3 步是一段相当慢的代码,除非有办法对其进行矢量化。
-
@P0W: 'zac' 有效(第 6 个元素); 'zaz' 无效(第 7 个元素)。
标签: string matlab find character cell-array