如何使用从另一个字符串中获取的字母顺序字母创建字符串?
假设我有类似的东西
String theWord = "Hello World";
如何计算新String以使其看起来像“
dehllloorw
这是theWord,但按字母顺序按字符排序。
提前致谢
答案 0 :(得分:28)
char[] chars = theWord.toCharArray();
Arrays.sort(chars);
String newWord = new String(chars);
答案 1 :(得分:10)
见Arrays.sort()
& toCharArray()
答案 2 :(得分:4)
同意,我偷了解决方案。但显然,剥离空白并使所有内容都小写也很重要:
char[] array = theWord.replaceAll("\\s+", "").toLowerCase().toCharArray();
Arrays.sort(array);
System.out.println(new String(array));
答案 3 :(得分:2)
上述解决方案都不是特定于语言环境的,因此我提供了这个解决方案,效率不高,但效果非常好。
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();
}
答案 4 :(得分:1)
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];
}
答案 5 :(得分:0)
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);
}
}
答案 6 :(得分:0)
char[] chars2 = b.toLowerCase().toCharArray();
Arrays.sort(chars1);
String Ns1 = new String(chars1);
答案 7 :(得分:0)
所有解决方案都是O(nlogn),因为它们正在对数组进行排序。相反,我们可以采用array [26]并在O(n)中执行此操作。 将其转换为小写并删除O(n)后, int [] ar = new int [26]; for(char c:s.toCharArray())ar [c-'a'] ++; 然后形成所需的字符串O(n)。