2013-11-14 3 views
1

Что мне нужно сделать, это взять строку с произвольными буквами и взять буквы и поместить их в алфавитном порядке. Например, lidfj, будет; dfijl.Сортировка строки в алфавитном порядке без массивов в java

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

Заранее спасибо.

Редактировать: Я думаю, что я закончил на ночь, так как я не могу думать ни о чем другом.

public class PP426 { 
    public static String alphabetize (String input) { 
     String sorted = "; 
     for (int i = 0; i < input.length(); i++) { 
      char c = input.charAt(i); 
      if() { 
       sorted += character; 
      } 
     } 

     return sorted; 

    } 
    public static void main(String[] args) { 
     System.out.println(alphabetize("iunaselfksdf")); 
    } 
} 
+0

Я бы поэкспериментировать с Струнные переменных, а затем внимательно посмотреть на функции класса String - http://docs.oracle.com/javase/6/docs/api/java/lang/String. html – Coffee

+0

SOoooo ... подождите. Просто прочитайте ответ Масуда, и теперь я не уверен: не обходится ли сортировка строк (то есть, какая строка на первом месте), или это связано с тем, что они строят буквы внутри строк? –

+0

@JohannesH. - сортировка букв внутри строк – Coffee

ответ

2

Используйте for петлю и String.charAt() пересечь строку. Используйте StringBuilder (для эффективности, объединяя струны, также, но это очень важно, чтобы собрать буквы в порядке. Используя эти знания, теперь реализуйте предпочтительный алгоритм сортировки (который, я думаю, является частью excersise, поэтому я не буду делать это здесь;))

+0

Мы еще не узнали о строковых сборщиках, поэтому я не уверен, что делать с StringBuilder. – itsaferbie

+1

Затем просто проигнорируйте эту часть (и вместо этого используйте обычные строки) и спросите об этом своего учителя. Или вернитесь после сортировки, и я покажу вам, как использовать «StringBuilder». –

+1

@itsaferbie - Stringbuillder - это своего рода бонус. STring работает нормально – Coffee

5

Из ваших вопросов и комментариев кажется, что это домашнее задание , для которого вам разрешено использовать только класс String для сортировки (это, очевидно, неэффективно, но ... ну ... это домашнее задание в любом случае).

Здесь я предполагаю, что у вас уже есть идея о том, как выполнять сортировку (например, сортировку пузырьков) с помощью массива. Если нет, найдите простейший алгоритм сортировки, такой как сортировка вставки и узнайте его.

Если вы знаете, как сортировать массив, вы можете просто перевести свою логику на использование методов String.

Например:

  • обращающегося символ в позиции: yourString.charAt(i)
  • настройка персонажа в положении: yourString = yourString.substring(0, i) + charToSet + yourString.substring(i+1)
  • присоединяя характер: yourString += charToSet

Если вы не даже имеют знания в сортировке, вот один из способов tha t, которые включают только String:

Я не буду давать вам фактический код. Узнайте это сами:

for currentChar in 'a' to 'z' 
    loop through each char in inputString 
    if you encounter any char = currentChar then 
     append that character to resultString 
    end if 
    end loop 
end for 

resultString contains the result you need 
+0

Ughs, это еще менее неэффективно, чем базовый «найти наименьший оставшийся элемент и вставить его в конце результата» –

+0

Я не знаю сортировки, и мы еще не изучили массив. Масси, мы должны учиться очень скоро, хотя. – itsaferbie

+0

@JohannesH. Я знаю, что мой путь немного сложный (поскольку я предположил, что строка будет содержать только 'a' - 'z'): P Мне просто кажется, что OP действительно новичок и кажется, что сортировка для вставки уже слишком много для него. поэтому я даю этот «сложный» метод (на самом деле сортировка в виде ведра), который, по моему мнению, легче для OP, чтобы овладеть концепцией ... –

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