---------------------- android培训、java培训、期待与您交流! ----------------------
本节介绍将一组字符串中不同的字符出现的次数按多少次序输出
前面我们已经谈到关于字符串中字符出现的次数,但是那种输出是无序的,就是说你无法直观的看到哪个字符的出现次数最多或最少。
我觉得,关键问题是需要借助一个数组或者容器来接收字符以及出现的次数。下面我们主要通过定义一个数组来实现。
//实现如下
package javaArray;
import java.util.Arrays;
public class TestSortString {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
String st="abadcdffbaebaujgsajfgdsfjdfdfjjdfksj'';'";
try {
sortStringByArray(st);
} catch (Exception e) {
// TODO: handle exception
}
}
private static void sortStringByArray(String st){
String sb=st;
//将字符串转化成字符型数组
char []c=sb.toCharArray();
//对字符型数组进行排序
Arrays.sort(c);
//测试排序后的字符型数组
System.out.println("字符型数组排序后的结果");
for(int i=0;i<c.length;i++){
System.out.print(c[i]);
}
//将排序后的数组转化成字符串
String sr=new String(c);
//测试
System.out.println("\n"+"转化成字符串");
System.out.println(sr);
int m=0;
int n=0;
int s=0;
int f=0;
StringBuffer y=new StringBuffer();
//获得由字符和数字组成的字符串
for(int j=0;j<sr.length();j++){
m=sr.indexOf(sr.charAt(j)) ;
n=sr.lastIndexOf(sr.charAt(j));
s=(n-m)+1;
y=y.append(sr.substring(j,j+1));
y=y.append(s);
j=j+s-1;
}
//获取由字符和数字组成的字符串数组
String y1=y.toString().trim();
int leng=y1.length()/2;
String []x=new String[leng];
for(int i=0;i<y1.length();i+=2){
x[f]=y1.substring(i,i+2);
//System.out.println(x[f]);//用于测试
f+=1;
}
//对字符串数组进行排序,按照每个字数串的第二位数字的大小进行冒泡排序
for(int j=0;j<x.length-1;j++){
for(int i=0;i<x.length-1;i++){
String temp;
if(x[i].charAt(1)>x[i+1].charAt(1)){
temp=x[i];
x[i]=x[i+1];
x[i+1]=temp;
}
}
}
//排序后的结果
System.out.println("重构字符串数组排序后的结果");
for(int i=0;i<x.length;i++){
System.out.print(x[i]);
}
String sd="";
for(int i=0;i<x.length;i++){
sd=sd+x[i].charAt(0)+":"+x[i].charAt(1)+",";
}
System.out.println("\n"+"按次序排序并输出");
System.out.print(sd.substring(0,sd.lastIndexOf(',')));
}
}
---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.youkuaiyun.com/heima