Предложение алгоритмов форматирования строки - PullRequest
0 голосов
/ 15 августа 2010

У меня следующая проблема:

Строка ввода 1: «A [ПРОБЕЛ] B [ПРОБЕЛ] C [ПРОБЕЛ] [ПРОБЕЛ] D [ПРОБЕЛ] [ПРОБЕЛ] E»
Входная строка 2:"1-" ИЛИ 1,2 "ИЛИ" 3 - "

Если входная строка 2 равна 1, то я должен вернуть строку из первого слова

Если входная строка равна 3- тогда я должен вернуть строку из 3-го слова,
Если входная строка равна 1,2, тогда я должен вернуть слово 1 и 2

Нельзя предполагать, что более одного пробела является разделителем

Например,

3- должен возвращать C [ПРОБЕЛ] [ПРОБЕЛ] D [ПРОБЕЛ] [ПРОБЕЛ] E

ОБРАТИТЕ ВНИМАНИЕ [ПРОБЕЛ] в качестве фактического пробела

Ответы [ 3 ]

1 голос
/ 15 августа 2010

Вы не сказали, на каком языке так ... Java!Он хакерский и предполагает, что входные данные верны, но, вероятно, хорошая отправная точка

1 голос
/ 15 августа 2010

Используйте регулярное выражение, которое соответствует только одному пробелу (т.е. что-то вроде "[^ ] [^ ]"), чтобы найти позиции, по которым вы должны разбить вашу строку на массив или какой-то список.Затем верните соответствующие части вашего массива.

0 голосов
/ 15 августа 2010

Вот способ сделать это на 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...