嘿牛程序员_成都传智博客_讨论字符串中字符出现的次数(续一:通过数组实现按次序输出)

来源:互联网 发布:c语言 define 编辑:程序博客网 时间:2024/04/29 19:32

微笑本节介绍将一组字符串中不同的字符出现的次数按多少次序输出
       前面我们已经谈到关于字符串中字符出现的次数,但是那种输出是无序的,就是说你无法直观的看到哪个字符的出现次数最多或最少。
       我觉得,关键问题是需要借助一个数组或者容器来接收字符以及出现的次数。下面我们主要通过定义一个数组来实现。

 //实现如下
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://cd.itcast.cn?140827ls 中的技术论坛专区!

0 0
原创粉丝点击