检查String是否按字母顺序排列的最佳方法是什么?

时间:2014-04-10 07:01:29

标签: java

这是检查五个字符串是否按字母顺序排列的最直观的方法吗?

String newStr = "Hello";

if (newStr.charAt(0) <= newStr.charAt(1) &&
    newStr.charAt(1) <= newStr.charAt(2) &&
    newStr.charAt(2) <= newStr.charAt(3) &&
    newStr.charAt(3) <= newStr.charAt(4)) {
        System.out.println("In order");
} else
    System.out.println("NOT in order");

7 个答案:

答案 0 :(得分:2)

你可以试试这个

public static void main(String[] args) {
    String str = "Hello";
    char[] newStr = str.toCharArray();
    char previous = '\u0000';
    isInOrder(previous,newStr); 

}

private static boolean isInOrder(char previous, char[] arr) {
    for (char current : arr) {
        if (current < previous)
            return false;
        previous = current;
    }
    return true;
}

答案 1 :(得分:2)

在你的情况下,这可能已经足够了。 但是想想它就像你想要对超过五个字符的字符串这样做...而不是一个非常长的if语句和更多的工作要做。

我建议使用循环,然后你不需要修改String的长度。

boolean sorted = true;
for(int i = 0; i < newStr.length()-1; i++){
    if(newStr.charAt(i) >= newStr.charAt(i+1)){
      sorted = false;
      break;
    }
}
if(sorted){
    System.out.println("In order");
}else{
    System.out.println("NOT in order");
}

答案 2 :(得分:1)

您可以使用如下的正则表达式:

public boolean checkString(String str)  
{
   String str = "^a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*$";
   Pattern pattern = null;
   Matcher matcher;
   try{
         pattern = Pattern.compile(str,Pattern.CASE_INSENSITIVE);

         System.out.println(matcher.matches());*/
         matcher = pattern.matcher("Hello");
         return matcher.matches();
      }
   catch(Exception ex){
         ex.printStackTrace();
        return false;
   }  
}   

您的主要课程或您在上面打电话的地方:

String myStr = "Hello";  
boolean isAlphaOrder = checkString(myStr);  
if(isAlphaOrder)  
  System.out.println("String is in order");
else
   System.out.println("NOT in order");

答案 3 :(得分:1)

如果您正在寻找最简单的那个,那么也许这就是您所寻找的:

public static void main(String[] args) {
    String str = "Hello";
    System.out.println(alphabeticalOrder(str.toLowerCase()));

}
public static boolean alphabeticalOrder(String str){
    for(int i = 0;i<str.length()-1;i++)         
        if(str.charAt(i) > str.charAt(i+1))
            return false; 
    return true;
}

答案 4 :(得分:0)

你必须要知道,资本中的信件与他们的信不是资本的索引不同。

所以如果你想让abcDe返回true,你还应该使用一个临时字符串来检查:

String yourString ="..."
String tmp = yourString.toLowerCase();
boolean isInOrder = testYourString(tmp);

答案 5 :(得分:0)

你可能想要这个:

public static void main(String[] args) {
        // TODO Auto-generated method stub

        String str="Hello";
        str=str.toLowerCase();
        char[] ch=str.toCharArray();
        Arrays.sort(ch);
        String str1="";
        for(int i=0;i<ch.length;i++)
        {
            str1+=ch[i]+"";
        }
        if(str1.equals(str))
        {
            System.out.println("In order");
        }
        else
        {
            System.out.println("NOT in order");
        }



    }

答案 6 :(得分:0)

似乎逻辑需要改进

输入字符串&#34; AbCd&#34; &amp; HeLLo 代码正在打印不按顺序

You have tried to compare the ascii values of characters and you know that for 
same case letters (lower Case or Upper Case) ascii values would be in increasing order. 
Hence your logic stays intact if input string is in same case : 
e.g. "hello" ,"HELLO", "abcd" or "ABCD" 

如果您使用带有混合大小写字母的字符串,那么它将无法正常工作。