代码之家  ›  专栏  ›  技术社区  ›  Avinash

字符串格式算法建议

  •  0
  • Avinash  · 技术社区  · 14 年前

    输入字符串1:“A[SPACE]B[SPACE]C[SPACE][SPACE]D[SPACE][SPACE]E”
    输入字符串2:“1-”或“1,2”或“3-”

    如果输入字符串2是1-那么我应该从第一个单词返回字符串


    如果输入字符串是1,2,那么我应该返回单词1和2

    不能假定多个空格是分隔符

    例如

    3-应返回C[SPACE][SPACE]D[SPACE][SPACE]E

    请将[SPACE]视为实际的空格字符

    3 回复  |  直到 14 年前
        1
  •  1
  •   mlathe    14 年前

    你没说什么语言所以。。。爪哇!

    public void foo(String input, String q) {
      //First clean up the input string so that all tokens are delimited by one space
      input = input.replaceAll(" *", " ");
    
      String[] inputTokens = input.split(",");       
      String[] queries = q.split(",");
      for (String query : queries) {
        if (query.endsWith(-)) {
          query = query.replace("-", "");
          for (int i = Integer.parseInt(query), i <= inputTokens.length; i++) {
            System.out.println(inputTokens[i]);
          }
        } else {
          System.out.println(inputTokens[Integer.parseInt(query)]);
        }
      }
    
        2
  •  1
  •   Heinzi    14 年前

    使用只匹配单个空格的正则表达式(例如 "[^ ] [^ ]"

        3
  •  0
  •   John La Rooy    14 年前

    这里有一个用Python实现的方法

    import re
    
    def f(s1,s2):
        items = re.findall("[^ ]+| +",s1)
        result = []
        for idx in s2.split(','):
            i,j,_ = idx.partition("-")
            i=int(i)-1
            result.append(''.join(items[i:None if j else i+1]))
        return ','.join(result)
    
    assert f("A B C  D  E", "3-") == "C  D  E"
    assert f("A B C  D  E", "1,2") == "A,B"
    assert f("A B C  D  E", "4-,1,2") == "D  E,A,B"