gpt4 book ai didi

java - 如何按每个字符串中元音的数量对字符串数组进行升序排序?

转载 作者:行者123 更新时间:2023-12-01 18:00:13 26 4
gpt4 key购买 nike

    import java.util.*;
class VowelAsc
{
public static void main(String args[])
{
int count=0;
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String [] s=new String[n];
int [] b=new int[40];
for(int i=0;i<n;i++)
{
s[i]=sc.next();
}
for(int i=0;i<s.length;i++)
{
char[] a=s[i].toCharArray();
for(int c=0;c<a.length;c++)
{

if(a[c]=='a' || a[c]=='e' || a[c]=='i' || a[c]=='o' || a[c]=='u' ||a[c]=='A' ||a[c]=='E' || a[c]=='I' || a[c]=='O' || a[c]=='U')
{
count++;
//b[c]=count;
}
}
if(count>0)
{
if(i<s.length)
{
String t=s[i];
s[i]=s[i+1];
s[i+1]=t;
}
}
}
}
}

我正在尝试计算每个字符串中存在的元音,并且我想根据计数变量交换字符串,但我无法做到这一点。接受字符串后,我使用 toCharArray() 函数将其转换为 char 数组,并将每个字符与小写和大写元音进行比较。

我收到错误。任何编写代码部分的帮助将不胜感激。

输入:

n=4
xyz
bad
aeiou
hello

输出:

aeiou
hello
bad
xyz

最佳答案

嗯...这可能有点过分了(列表和正则表达式),但如果您不必执行数百万次,那么通过自定义比较器将它们排序到列表中即可完成这项工作:

String[] s = new String[]{"xyz", "bad", "aeiou", "hello"};

Arrays.sort(s, new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
return o2.replaceAll("[^aeiouAEIOU]", "").length()
- o1.replaceAll("[^aeiouAEIOU]", "").length();
}
});

编辑:通过删除列表进行优化,感谢@Holger

关于java - 如何按每个字符串中元音的数量对字符串数组进行升序排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41571190/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com