Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 字符串解析到数组的最佳算法_Arrays_String_Algorithm_Parsing - Fatal编程技术网

Arrays 字符串解析到数组的最佳算法

Arrays 字符串解析到数组的最佳算法,arrays,string,algorithm,parsing,Arrays,String,Algorithm,Parsing,我有这样的字符串列表 "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 ->

我有这样的字符串列表

"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

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

这里是一种使用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']})
>>> 
>>从集合导入defaultdict
>>>d=默认DICT(列表)
>>> 
>>>对于sec,[i.split(“/”)中的部分,用于arr中的i]:
...     d[秒]。追加(部分)
... 
>>> 
>>>d
defaultdict(,{'Section 1':['Part 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);
      }
   }
}
import java.util.*;
公共a类{
公共静态void main(字符串[]args){
列表输入=新的ArrayList();
输入。添加(“第1节/第1部分”);
输入。添加(“第1节/第2部分”);
输入。添加(“第2节/第1部分”);
// ...
HashMap=newHashMap();
for(字符串s:输入){
字符串[]部分=s.split(“/”);
字符串键=部件[0];
字符串值=部分[1];
ArrayList list=map.get(key);
if(list==null){
列表=新的ArrayList();
地图。放置(键、列表);
}
列表。添加(值);
}
}
}

/
拆分,然后根据第一项进行分类。你的编程语言是什么?我已经把它拆分了。我想用它来创建数组你尝试了什么?谢谢你的回答。你能用Java写这个吗?