找不到地图中的第一个子字符串

时间:2012-10-05 03:28:20

标签: matlab

我在Matlab中使用containers.Map类作为字典,我想找到不在我的地图中的第一个子串(从左到右)。

例如,假设我有字符串'math',我的地图是这样的

key    value
m        1
ma       2
.        .
.        .
.        .

因此,如果我从左向右开始阅读,那么不在地图中的第一个子字符串将是'mat'

我想到的一个明显的答案是循环每个字符并进行一些连接,以便使用 iskey(map,key)方法找到不在我的地图中的子字符串。是每次迭代中的子字符串。

这样做有效吗?也许在matlab中有一些预定义的函数或者至少是一个更优雅的代码。

由于

1 个答案:

答案 0 :(得分:1)

这个怎么样?

map = containers.Map;

% Initialise map
map('m') = 1;
map('ma') = 2;
map('burt') = 3;

% Define search string
m = 'math';

% Create cell array element for first 1,2,3... letters of search
ma = repmat(m,length(m),1);
ma = cellstr(char(ma .* tril(ones(length(m)))));

% Find first substring that isn't in map
index = find(~map.isKey(ma),1,'first')