字符串格式算法建议

时间:2010-08-14 21:20:45

标签: algorithm

我有以下问题:

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

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

返回字符串

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

我们不能假设多个空格是分隔符

例如

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

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

3 个答案:

答案 0 :(得分:1)

使用仅匹配单个空格(例如"[^ ] [^ ]"之类的)的正则表达式来查找应将字符串拆分为数组或某种列表的位置。然后返回数组的相关部分。

答案 1 :(得分:1)

你没说什么语言...... Java! 它是hacky,并假设输入有效,但可能是一个很好的起点

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 :(得分:0)

这是在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"