如何判断字符串是否按字母顺序自然排序 - java
How to tell if a String is naturally sorted alphabetically or not - java
我正在使用 Java 创建一个名为 isOrdered 的方法来判断字符串是否按字母顺序自然排序。例如,如果输入是 "effort" 或 "Aaaabbyy",则该方法将 return true,与 "hello" 相比,[=41] =] 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;
}
}
}
}
不过,我不确定这是否是解决此问题的正确方法。
感谢您的帮助。
试试这个
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;
}
}
我认为这应该可以解决您的问题。我添加了另一种方法来检查它是否也以降序方式排序。
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;
}
}
希望这对您有所帮助。干杯!
您可以使用 Java 中的排序方法。创建一个简单的方法来对字符串进行排序:
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
我正在使用 Java 创建一个名为 isOrdered 的方法来判断字符串是否按字母顺序自然排序。例如,如果输入是 "effort" 或 "Aaaabbyy",则该方法将 return true,与 "hello" 相比,[=41] =] 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;
}
}
}
}
不过,我不确定这是否是解决此问题的正确方法。
感谢您的帮助。
试试这个
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;
}
}
我认为这应该可以解决您的问题。我添加了另一种方法来检查它是否也以降序方式排序。
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;
}
}
希望这对您有所帮助。干杯!
您可以使用 Java 中的排序方法。创建一个简单的方法来对字符串进行排序:
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