#java #string #character #alphabetical #sorted
#java #строка #символ #алфавитный #сортировка
Вопрос:
Как мне создать строку с буквами алфавитного порядка, взятыми из другой строки?
Допустим, у меня есть что-то вроде этого
String theWord = "Hello World";
Как мне вычислить новую строку, чтобы она выглядела как»
dehllloorw
Которое является словом, но отсортированным посимвольно в алфавитном порядке.
Заранее спасибо
Комментарии:
1. что вы уже пробовали? Как вы думаете, какова основная логика для этого?
Ответ №1:
char[] chars = theWord.toCharArray();
Arrays.sort(chars);
String newWord = new String(chars);
Комментарии:
1. Еще одно домашнее задание, выполненное Stack Overflow за 4 минуты.
2. @Paul это часть моей схемы обеспечения безопасности работы. Не давая будущим разработчикам думать о своих проблемах, я также не даю им совершенствоваться и устраняю потенциальную конкуренцию 🙂
Ответ №2:
Смотрите Arrays.sort()
amp; toCharArray()
Ответ №3:
Согласен, я украл решение. Но, по-видимому, также важно убрать пробелы и сделать все строчными:
char[] array = theWord.replaceAll("\s ", "").toLowerCase().toCharArray();
Arrays.sort(array);
System.out.println(new String(array));
Ответ №4:
Ни одно из вышеупомянутых решений не зависит от локали, поэтому я пришел с этим решением, оно неэффективно, но работает очень хорошо..
public static String localeSpecificStringSort(String str, Locale locale) {
String[] strArr = new String[str.length()];
for(int i=0;i<str.length();i ){
strArr[i] = str.substring(i,i 1);
}
Collator collator = Collator.getInstance(locale);
Arrays.sort(strArr, collator);
StringBuffer strBuf = new StringBuffer();
for (String string : strArr) {
strBuf.append(string);
}
return strBuf.toString();
}
Ответ №5:
char[] arr = new char[theWord.length()];
for(int i=0;i<theWord.length;i )
{
arr[i]=theWord.charAt(i);
}
for(int i=0;i<theWord.length();i )
for(int j=0;j<theWord.length();j )
{
char temp = arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
int size=theWord.length();
theWord="";
for(int i=0;i<size;i )
{
theWord =arr[i];
}
Ответ №6:
import java.util.Arrays;
import java.util.Scanner;
// re arrange alphabets in order
public class RearrangeAlphabets {
@SuppressWarnings("resource")
public static void main(String[] args) {
String theWord;
Scanner in = new Scanner(System.in);
System.out.println("Enter a string to rearrange: n");
theWord = in.nextLine();
int length = theWord.length();
System.out.println("Length of string: " length);
char[] chars=theWord.toCharArray();
Arrays.sort(chars);
String newWord=new String(chars);
System.out.println("The Re-Arranged word : " newWord);
}
}
Ответ №7:
char[] chars2 = b.toLowerCase().toCharArray();
Arrays.sort(chars1);
String Ns1 = new String(chars1);
Ответ №8:
Все решения были O (nlogn), поскольку они сортируют массив. Вместо этого мы можем взять array[26] и сделать это в O (n). после того, как вы скроете его в нижний регистр и уберете пробелы, которые являются O(n), int[] ar=new int[26]; for(char c:s.toCharArray ()) ar[c-‘a’] ; и затем сформируйте требуемую строку O(n).