生成字符串的所有可能的连续单词组合

时间:2017-01-07 17:10:42

标签: ruby string combinations words

我希望生成特定字符串的所有可能的连续单词组合,给定最小长度作为arg。

所以说我有“你好”,结果是(给出最小长度为3):'hel','ell','llo','hell','ello','hello'。

我实现这一目标的一种方法是通过:

-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
   //minimum size of your cell, it should be single line of label if you are not clear min. then return UITableViewAutomaticDimension;    
   return UITableViewAutomaticDimension; 
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewAutomaticDimension;
}

但不确定这是否可以用更大的词语。

1 个答案:

答案 0 :(得分:2)

此解决方案避免了不必要的joins

word     = "hello"
size     = word.size
min_size = 3

(min_size..size).flat_map { |l| (0..size - l).map { |i| word[i, l] } }
#=> ["hel", "ell", "llo", "hell", "ello", "hello"]

如果您不需要数组但只需要遍历每个可能的子字符串,此解决方案将使用更少的内存:

(min_size..size).each do |l|
  (0..size - l).each do |i|
    # do something with word[i, l]
  end
end