MCPcopy Create free account
hub / github.com/EndlessCheng/codeforces-go / parseRawArray

Function parseRawArray

leetcode/testutil/leetcode.go:13–67  ·  view source on GitHub ↗
(rawArray string)

Source from the content-addressed store, hash-verified

11)
12
13func parseRawArray(rawArray string) (splits []string, err error) {
14 invalidErr := fmt.Errorf("invalid test data: %s", rawArray)
15
16 // check [] at leftmost and rightmost
17 if len(rawArray) <= 1 || rawArray[0] != '[' || rawArray[len(rawArray)-1] != ']' {
18 return nil, invalidErr
19 }
20
21 // ignore [] at leftmost and rightmost
22 rawArray = rawArray[1 : len(rawArray)-1]
23 if rawArray == "" {
24 return
25 }
26
27 isPoint := rawArray[0] == '('
28
29 const sep = ','
30 var depth, quotCnt, bracketCnt int
31 for start := 0; start < len(rawArray); {
32 end := start
33 outer:
34 for ; end < len(rawArray); end++ {
35 switch rawArray[end] {
36 case '[':
37 depth++
38 case ']':
39 depth--
40 case '"':
41 quotCnt++
42 case '(':
43 bracketCnt++
44 case ')':
45 bracketCnt--
46 case sep:
47 if depth == 0 {
48 if !isPoint {
49 if quotCnt%2 == 0 {
50 break outer
51 }
52 } else {
53 if bracketCnt%2 == 0 {
54 break outer
55 }
56 }
57 }
58 }
59 }
60 splits = append(splits, strings.TrimSpace(rawArray[start:end]))
61 start = end + 1 // skip sep
62 }
63 if depth != 0 || quotCnt%2 != 0 {
64 return nil, invalidErr
65 }
66 return
67}
68
69func parseRawArg(tp reflect.Type, rawData string) (v reflect.Value, err error) {
70 rawData = strings.TrimSpace(rawData)

Callers 2

parseRawArgFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected