Java 字符串排序--------请对一组字符串进行排序,字符串由大小写字母和数字组成,需要满足一下比较规则

题目描述

         请对一组字符串进行排序,字符串由大小写字母和数字组成,需要满足一下比较规则

  1. 长度不同时,长度较短在排前面。
  2. 长度相同时,按照字典顺序排列(AaBb-Zz,0-9顺序),即大写字母在小写字母前,数字排在字母后。

例:

abc Abc 123 1 1bc CBD abcd a

排序后结果为:

a 1 Abc abc CBD 1bc 123 abcd

代码如下

public class test{
	public static void main(String[] args) {
		String str [] = {"abc","Abc","123","1","1cb","CBD","abcd","a"};// 需要排序的字符串
		for(int i=0;i<str.length;i++) {
			for(int j=i+1;j<str.length;j++) {
				if(longs(str[i],str[j])) {
					String strs = str [i];
					str [i] =str [j];
					str [j]= strs;
				}else {
					continue;
				}
			}
		}
		for(int i=0;i<str.length;i++) {
			System.out.println(str[i]);
		}
	}
	public static  boolean longs (String s1,String s2)  {  //比较字符串的长度,如果需要互换位置,返回true
		if((s1.length())<(s2.length())) {
			return false;
		}else if(s1.length()>s2.length()) {
			return true;
		}else {
			if(compare(s1,s2)) {    //若字符串长度相同则利用fun函数进行判断
				return true ;
			}
		}
		return false;
	}
	
	public static boolean compare(String s1,String s2) {
		if(s1.equals(s2)) {    //判断俩个字符串是否相同
			return false ;
		}
		for(int i=0;i<s1.length();i++) {
			if((s1.charAt(i)>='A'&&s1.charAt(i)<='Z')&&(s2.charAt(i)>='a'&&s2.charAt(i)<='z')) {//s1 大写 s2小写
				if(s1.charAt(i)>s2.charAt(i)-32) {
					return true ;
				}else if(s1.charAt(i)==s2.charAt(i)-32) {
					return true ;
				}else {
					return false ;
				}
			}
			if((s1.charAt(i)>='a'&&s1.charAt(i)<='z')&&(s2.charAt(i)>='A'&&s2.charAt(i)<='Z')) {//s1小写  s2大写
				if(s1.charAt(i)-32>s2.charAt(i)) {
					return true ;
				}else if(s1.charAt(i)-32==s2.charAt(i)) {
					return true ;
				}else {
					return false ;
				}
				}
			if((s1.charAt(i)>='A'&&s1.charAt(i)<='Z')&&(s2.charAt(i)>='A'&&s2.charAt(i)<='Z')) { //同大写
				if(s1.charAt(i)>s2.charAt(i)) {
					return true ;
				}else if(s1.charAt(i)==s2.charAt(i)) {
					continue;
				}else {
					return false;
				}
			}
			if((s1.charAt(i)>='a'&&s1.charAt(i)<='z')&&(s2.charAt(i)>='a'&&s2.charAt(i)<='z')) { //同小写
				if(s1.charAt(i)>s2.charAt(i)) {
					return true ;
				}else if(s1.charAt(i)==s2.charAt(i)) {
					continue;
				}else {
					return false;
				}
			}
			if(s1.charAt(i)<s2.charAt(i)) {   //其他情况
				return true ;
			}else if(s1.charAt(i)==s1.charAt(i)) {
				continue;
			}else {
				return false;
			}
			
		}
		return false;
	}
}

解题思路

 思路基本和冒泡排序相同,若前者的字符串长度大于后者,或前者的字典序大于后者则进行位置互换。首先利用longs函数来判断字符串的长度,若长度相同则利用compare函数进行判断,首先用equals判断是否相同,用charAt来读取单个字符进行比较,当s1,s2同为大写或小写,s1,s2有一个大写有一个小写时,情况比较复杂,用if函数判断。

此代码为小编自己一人所写,若发现代码有误,请私聊     勿喷!!!!

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是使用 Java 编写的基本字符串排序算法示例: ``` public static void main(String[] args) { String[] strArr = {"apple", "banana", "orange", "kiwi", "grape"}; // 调用 sortStrings 方法进行排序 sortStrings(strArr); // 打印排序后的字符串数组 for (String str : strArr) { System.out.println(str); } } public static void sortStrings(String[] strArr) { int n = strArr.length; // 通过嵌套循环比较每对字符串 for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { if (strArr[i].compareTo(strArr[j]) > 0) { // 如果第 i 个字符串字母表中排在第 j 个字符串之后,则交换两个字符串 String temp = strArr[i]; strArr[i] = strArr[j]; strArr[j] = temp; } } } } ``` 这个示例使用了一个双重循环来比较每对字符串,并在需要时交换它们的位置,从而实现了基本的字符串排序。这里使用了 String 类的 `compareTo` 方法来比较两个字符串的大小。如果第一个字符串排在第二个字符串之后,`compareTo` 方法将返回一个正数,因此我们使用 `> 0` 的条件来检查字符串的顺序,并在需要时进行交换。 ### 回答2: 要用Java写一个排序字符串,可以使用Java字符串类(String)和数组类(Arrays)来实现。 首先,可以定义一个方法来对字符串进行排序。该方法的输入参数为一个字符串数组,返回值为排序后的字符串数组。 方法实现如下: ```java import java.util.Arrays; public class SortString { public static String[] sort(String[] strArr) { Arrays.sort(strArr); return strArr; } public static void main(String[] args) { String[] strArr = {"apple", "orange", "banana", "grape"}; String[] sortedStrArr = sort(strArr); System.out.println("排序后的字符串数组为:"); for (String str : sortedStrArr) { System.out.println(str); } } } ``` 上述代码中,我们定义了一个名为`sort`的静态方法,该方法接受一个字符串数组作为输入参数,并使用`Arrays.sort`方法进行排序。最后,返回排序后的字符串数组。 在`main`方法中,我们定义了一个字符串数组`strArr`,其中包含了一些水果的名称。然后,我们调用`sort`方法对该字符串数组进行排序,并将排序后的结果赋值给`sortedStrArr`。最后,遍历输出排序后的字符串数组。 运行上述代码,输出结果如下: ``` 排序后的字符串数组为: apple banana grape orange ``` 这样,我们就成功地使用Java编写了一个排序字符串的程序。 ### 回答3: 要使用Java编写一个排序字符串,可以使用Java内置的`Arrays.sort()`方法或使用自定义的排序算法来实现。 1. 使用`Arrays.sort()`方法: ``` import java.util.Arrays; public class SortString { public static void main(String[] args) { String str = "cbadfe"; char[] charArray = str.toCharArray(); Arrays.sort(charArray); String sortedStr = new String(charArray); System.out.println("排序后的字符串:" + sortedStr); } } ``` 这个例子中,我们首先将字符串转换为字符数组,然后使用`Arrays.sort()`方法来对字符数组进行排序。最后,我们将排序后的字符数组转换回字符串,并输出结果。 2. 使用自定义排序算法: ``` public class SortString { public static void main(String[] args) { String str = "cbadfe"; char[] charArray = str.toCharArray(); // 使用冒泡排序算法进行排序 for (int i = 0; i < charArray.length - 1; i++) { for (int j = 0; j < charArray.length - 1 - i; j++) { if (charArray[j] > charArray[j + 1]) { char temp = charArray[j]; charArray[j] = charArray[j + 1]; charArray[j + 1] = temp; } } } String sortedStr = new String(charArray); System.out.println("排序后的字符串:" + sortedStr); } } ``` 这个例子中,我们使用了冒泡排序算法对字符数组进行排序。我们首先将字符串转换为字符数组,然后使用冒泡排序算法对字符数组进行排序。最后,我们将排序后的字符数组转换回字符串,并输出结果。 以上两种方法都可以实现字符串排序,只是使用了不同的排序算法。可以选择根据实际需求和要求来选择合适的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值