【问题标题】:Best algorithm for string parse to array字符串解析到数组的最佳算法
【发布时间】:2016-08-18 15:39:15
【问题描述】:

我有这样的字符串列表。

"Section 1/Part 1"
"Section 2/Part 1"
"Section 2/Part 2"
"Section 3/Part 1"
"Section 3/Part 2"
"Section 3/Part 3"

我想像这样在数组列表中解析它的数组列表:

Section 1 -> Part 1
Section 2 -> Part 1
          -> Part 2
Section 3 -> Part 1
          -> Part 2
          -> Part 3

一个简单的代码示例请理解算法

【问题讨论】:

  • / 拆分,然后根据第一项进行分类。你的编程语言是什么?
  • 我已经拆分了。我想用它创建数组
  • 你尝试了什么?

标签: arrays string algorithm parsing


【解决方案1】:

这是java中的一个解决方案:

import java.util.*;

public class a {
   public static void main(String[] args) {
      List<String> input = new ArrayList<String>();
      input.add("Section 1/Part 1");
      input.add("Section 1/Part 2");
      input.add("Section 2/Part 1");
      // ...

      HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();

      for (String s : input) {
        String[] parts = s.split("/");
        String key = parts[0];
        String value = parts[1];

        ArrayList<String> list = map.get(key);
        if (list == null) {
          list = new ArrayList<String>();
          map.put(key, list);
        }

        list.add(value);
      }
   }
}

【讨论】:

    【解决方案2】:

    这是一种使用 python 的方法,它将它们存储在字典中:

    >>> from collections import defaultdict
    >>> d = defaultdict(list)
    >>> 
    >>> for sec, part in [i.split('/') for i in arr]:
    ...     d[sec].append(part)
    ... 
    >>> 
    >>> d
    defaultdict(<type 'list'>, {'Section 1': ['Part 1'],
                                'Section 2': ['Part 1', 'Part 2'],
                                'Section 3': ['Part 1', 'Part 2', 'Part 3']})
    >>> 
    

    【讨论】:

    • 感谢您的回答。你能用 Java 写这个吗?
    猜你喜欢
    • 1970-01-01
    • 2020-07-22
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 2012-07-28
    • 1970-01-01
    • 2010-11-15
    相关资源
    最近更新 更多