Как определить, отсортирована ли строка в алфавитном порядке или нет - java - PullRequest
0 голосов
/ 25 февраля 2020

Я использую Java, чтобы создать метод с именем isOrdered , чтобы определить, отсортирована ли строка естественным образом в алфавитном порядке. Например, если входное значение было «усилием» или «Aaaabbyy», метод вернул бы true , по сравнению с «hello», который возвратил бы false , так как буква «h» появляется после буква «е».

Я до сих пор работал над этим,

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;
            }
       }
    }
}

Однако я не знаю, как сопоставить каждый символ с алфавитом, чтобы узнать, является ли строка естественной в алфавитном порядке.

Я думал о создании вложенного l oop в методе isOrdered . Пока первый l oop пересекает строку, второй l oop сопоставляет эти символы с порядком алфавита.

Что-то похожее на это,

    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;
               }
           }
       }
    }

Хотя Я не уверен, что это правильный способ решения этой проблемы.

Спасибо за вашу помощь.

Ответы [ 3 ]

1 голос
/ 25 февраля 2020

Я думаю, что это должно решить вашу проблему. Я добавил другой метод, чтобы проверить, сортируется ли он по убыванию.

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;
    }
}

Надеюсь, это поможет. Ура! * * 1004

0 голосов
/ 25 февраля 2020

Вы можете использовать метод сортировки из Java. Создайте простой метод сортировки String:

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
0 голосов
/ 25 февраля 2020

Попробуйте это

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;
    }
}

...