我在Matlab中使用containers.Map类作为字典,我想找到不在我的地图中的第一个子串(从左到右)。
例如,假设我有字符串'math',我的地图是这样的
key value m 1 ma 2 . . . . . .
因此,如果我从左向右开始阅读,那么不在地图中的第一个子字符串将是'mat'。
我想到的一个明显的答案是循环每个字符并进行一些连接,以便使用 iskey(map,key)方法找到不在我的地图中的子字符串。是每次迭代中的子字符串。
这样做有效吗?也许在matlab中有一些预定义的函数或者至少是一个更优雅的代码。
由于
答案 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')