检查字符串是否按字母顺序排列

时间:2013-02-16 20:13:43

标签: java string alphabetical-sort

我必须检查一个单词/短语,并说出其中的元音是按字母顺序排列还是按字母顺序排列。 我非常接近它。它只是最后一点比较数组中的数字,看看它们是否按降序排列等等。我知道我必须做一个嵌套的for循环,但我不确定如何做到这一点。谢谢你的帮助。

public static void main(String [] args)
{


    String result = "", result2="";                                 
    String userInput = "aeiou";
    int [] array = new int[userInput.length()];


    for(int i = 0; i < string.length(); ++i) 
    {

        char c = replace.charAt( i );
        int j = (int) c;
        array[i] = j;

        //printing unicode symbols (only for testing)
        result2 += array[i] +",";
        System.out.println(j);
    }

    boolean sequence = false;
    for(int i = 0; i <array.length-1 && !sequence; i++)
    {
        for(int x =i+1; x<array.length; x++)
        {
            //Here I am checking to see whether or not they are in alphabetical order
            if(array[i] < array[x])
            sequence = true;
            if(sequence == true)
                result = "The vowels are  in  alphabetical order";
            else
                result = "The vowels are not in alphabetical order";
        }
    }

    System.out.println(result);
}

2 个答案:

答案 0 :(得分:1)

由于您使用replaceAll(),我假设您也可以使用matches()replace是替换除元音之外的所有内容后包含字符串的变量):

boolean isAscending = replace.matches("a*e*i*o*u*");
boolean isDescending = replace.matches("u*o*i*e*a*");

嗯,这里有一些特殊情况似乎没有在您的代码中考虑:

  • replace变量中的字符串为空(无元音)
  • 仅包含一个重复的元音(例如pool - &gt; oo

在上述两种情况下,isAscendingisDescending都是true

答案 1 :(得分:0)

    String input = "abc";
    char[] a = input.toCharArray();
    Arrays.sort(a);
    StringBuilder sb = new StringBuilder();
    sb.append(a);
    if (input.equals(sb.toString())) {
        System.out.println("ascending");
    } else if (input.equals(sb.reverse().toString())) {
        System.out.println("descending");
    } else {
        System.out.println("unsorted");
    }