Flutter中如何从指定列表生成以1开头、3结尾的子列表?
提取以指定元素开头结尾的连续子列表
给定数字字符串列表:
List<String> items = [ '1', '2', '3', '1', '2', '4', '3', '1', '3' ];
需要生成所有以'1'开头、以'3'结尾的连续子列表,最终得到结果:
listOfLists = [[1,2,3], [1,2,4,3], [1,3]]
实现思路
核心逻辑是遍历列表时跟踪有效起始位置:
- 遇到
'1'时记录当前索引作为子列表的起点 - 遇到
'3'且存在有效起点时,提取从起点到当前位置的子序列,转换为数字后加入结果集,随后重置起点以准备下一个子列表
Python 实现代码
items = ['1', '2', '3', '1', '2', '4', '3', '1', '3'] result = [] start_idx = None for idx, item in enumerate(items): if item == '1': start_idx = idx elif item == '3' and start_idx is not None: # 提取子列表并转换为整数类型 sub_list = [int(x) for x in items[start_idx:idx+1]] result.append(sub_list) start_idx = None print(result) # 输出: [[1, 2, 3], [1, 2, 4, 3], [1, 3]]
Java 实现代码
import java.util.ArrayList; import java.util.List; public class SubListGenerator { public static void main(String[] args) { List<String> items = List.of("1", "2", "3", "1", "2", "4", "3", "1", "3"); List<List<Integer>> listOfLists = new ArrayList<>(); int startPos = -1; for (int i = 0; i < items.size(); i++) { String current = items.get(i); if ("1".equals(current)) { startPos = i; } else if ("3".equals(current) && startPos != -1) { List<Integer> subList = new ArrayList<>(); for (int j = startPos; j <= i; j++) { subList.add(Integer.parseInt(items.get(j))); } listOfLists.add(subList); startPos = -1; } } System.out.println(listOfLists); // 输出: [[1,2,3], [1,2,4,3], [1,3]] } }
内容的提问来源于stack exchange,提问作者burbuja
相关产品推荐
相关产品推荐

