如何判断Sting是否自然地按字母顺序排序-java

问题描述 投票:0回答:5

我正在使用Java创建一个名为isOrdered的方法,以判断字符串是否自然地按字母顺序排序。例如,如果输入是“努力”或“ Aaaabbyy”,则该方法将返回true,而将“ false,因为字母“ h”出现在字母“ e”之后。

到目前为止,我已经解决了,

public class orderWording {
    public static void main(String[] args) {
       System.out.println(isOrdered("effort")); //should appear true
    }
    public static boolean isOrdered (String s) {
       for (int i = 0; i < s.length(); i ++) {
            if (s.charAt(i) == /*alphabet */ ) {
                return true;
            }
            else {
                return false;
            }
       }
    }
}

但是,我不知道如何将每个字符与字母匹配,以了解字符串是否自然地按字母顺序排列。

我曾考虑在isOrdered方法中创建一个嵌套循环。当第一个循环遍历字符串时,第二个循环将那些字符与字母顺序匹配。

与此类似,

    public static boolean isOrdered (String s) {
       String a = 'abcdefghijklmnopqrstuvwxyz'
       for (int i = 0; i < s.length(); i ++) {
           for (int j = 0; j < a.length(); j ++){
               if (s.charAt(i) == a.charAt(j) ) {
                   return true;
               }
               else {
                   return false;
               }
           }
       }
    }

尽管,我不确定这是否是解决此问题的正确方法。

谢谢您的帮助。

java string methods alphabetical
5个回答
1
投票

您可以使用Java中的sort方法。创建一个简单的方法来对字符串进行排序:

public static String sortString(String str) 
{ 
    // convert string to char array 
    char chrArray[] = str.toCharArray(); 

    // sort string in array
    Arrays.sort(chrArray); 

    // return sorted string 
    return new String(chrArray); 
} 

要检查您的字符串是否已排序:

String str1 = "effort";
str1.equlsIgnoreCase(sortString(str1));  //true

String str2 = "apples";
str2.equlsIgnoreCase(sortString(str2));  //false

1
投票

我认为这应该可以解决您的问题。我添加了另一种方法来检查它是否也以降序排序。

public class OrderWording {
    public static void main(String[] args) {
       System.out.println(isAscendingOrdered("effort")); //true
       System.out.println(isAscendingOrdered("java")); //false
       System.out.println(isDescendingOrdered("Yea")); //true
    }

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

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

希望这会有所帮助。干杯!


0
投票

您需要具有该字符的地图,并且该地图应放在字母中。之后,它变得很容易做到。它可以用于任何字符集的任何语言。

或者您可以仅对字符串进行排序并将其与原始字符串进行比较。在它们相等的情况下,原始字符串按字母顺序排序。如果您知道不同,则不是按字母顺序排列。


0
投票

尝试查看此网站,它具有所有用于字符串的API

STRING API


0
投票

尝试一下

public class orderWording {
    public static void main(String[] args) {
       System.out.println(isOrdered("effort")); //should appear true
    }
    public static boolean isOrdered (String s) {
   boolean issorted=true;
       for (int i = 0; i < s.length()-1; i ++) {
            if (Character.toLowerCase(s.charAt(i)) >Character.toLowerCase(s.charAt(i+1) ) {
                issorted=false;
                break;
            }
       } return issorted;
    }
}

© www.soinside.com 2019 - 2024. All rights reserved.