2013-07-24 7 views
-2

Я хочу, чтобы развернуть строку, как показано ниже, но без использования дополнительного пространства ..Расширение строки - символа и появления каждого символа

a5b1c0d5a1a1 

И результат должен быть ..

aaaaabaa 

Я застрял здесь. Как это сделать без лишнего пространства?

+2

расширить его как? какой язык? –

+1

Я редактировал вопрос. Любой язык C/Java в порядке. Мне не нужен код. Просто логика. –

+1

Что случилось с d5? –

ответ

1

Я бы прочитал каждый символ, проверка есть буква, чем принять следующий символ, проверьте, является ли его число, а не просто добавьте к полученной строке букву раз.

В вашем примере, Первое, что я хотел бы прочитать, это a, a - письмо, поэтому читайте дальше, проверьте, есть ли его номер. Поэтому добавьте в результирующую строку пять a.

Используйте время цикла, например, для добавления буквы.

UPDATE

Explaning мой комментарий лучше.

Итак, вы перебираете строку.

индекс 0 у вас есть 'a'. Итак, вы читаете письмо, затем вы ожидаете получить номер, который равен 5.

Теперь я разделил строку на другую строку. Первый будет иметь все до тех пор, пока a, которое в этом случае будет только a.

Второй будет иметь все после того, как числа, в данном случае 5, который будет b1c0d5a1a1

Так возьмите первую строку, сцепить с 4 (5-1, у вас уже есть первый а) затем конкатенация с остальной частью строки.

string = b1c0d5a1a1 
string = substring(0,1) + "aaaa" + substring(1,stringsize-1); 

В таких случаях, как 0, вы можете играть с индексами подстроки, так что вы можете удалить письмо, вместо того, чтобы добавлять еще немного.

+0

Но мне не нужно использовать новую строку результатов, вот в чем проблема. –

+0

@karate_kid - Если вы делаете это в Java, вы * do * должны использовать новую строку. –

+0

@karate_kid Вы говорите, что вы не можете создать или обязательны, если вы делаете это в той же строке, которую вы читаете? – lcguida

Смежные вопросы