嘿牛程序员_成都传智博客_讨论字符串中字符出现的次数

来源:互联网 发布:淘宝一键傻瓜上传软件 编辑:程序博客网 时间:2024/05/19 05:34

---------------------- android培训、java培训、期待与您交流! ----------------------

 

微笑

讨论字符串中字符出现的次数

    整型数组中的元素,获取其元素并不困难。而对于字符串,要相对复杂,需要用到多种方法。个人总结:如果涉及到单个字符,可以将其转化为字符数组比较方便。如果涉及多个字符,建议采取替换法。当然如果采用map等方法更好。针对初学者,以下大部分是采用简单的方法予以实现。我认为:因为字符串的本身属性,对其进行处理时,占用大量内存。如何寻找更好更快捷的方法才是努力的方向。下面是我的一个程序举例,分别对单个字符、连续字符进行求次数。

程序实现如下:

package ItcastTest;

import java.util.ArrayList;
import java.util.Arrays;

import javax.naming.ldap.SortControl;

public class Test3 {

  public static void main(String[] args) {
  String a = "abcitcootefditcootfffggitcastcfgitcootffgd";
  String b = a.trim();
  /**
   * 一、返回每个字符出现的次数,
   * 1、采用替换法。利用string中的substring方法和replaceAll方法,
   * 2、采用转化法。想讲字符串转化成字符型数组,然后排序,再将字符型数组转化为字符串,然后利用索引求出各个字符的数目
   */
 
  // getNum1(b);
  getNum2(b);
 
  /**
   * 二、返回一个字符串出现的次数,
   * 利用string中的indexOf方法
   */
  //getNum3(b);

  /**
   * 三、返回所有连续字符出现的次数,
   * 方法类似于一中的1
   *
   */
 
  //getNum4(b);

 }

 private static void getNum1(String st1) {
  String temp = "";
  String d = "";
  int len = 0;

  while (st1 != "") {
   if (st1.length() > 1) {
    // System.out.println(b);//用来查看替换后的字符串
    d = st1.substring(0, 1);
    temp = st1.replaceAll(d, "");
    len = (st1.length() - temp.length());
    System.out.println(d + "重复出现的次数:" + len);
    st1 = temp.trim();
    if (st1 == "")
     break;
   }
  }
 }

 private static void getNum2(String st2) {
  int total = 0;
  int m=0;
  char[] a;
  char ch;
  a = st2.toCharArray();//将字符串赋给字符型数组
  Arrays.sort(a);//排序
        String s=new String(a);//将字符型数组赋给字符串
        System.out.println(s);//将排序后的字符串输出
        for(int i = 0; i < s.length();) {
   ch=s.charAt(i++);
   m=(s.lastIndexOf(ch)-s.indexOf(ch)+1);
   System.out.println(ch+"出现的次数为:"+m);
   i+=m;
    }
 }

 private static void getNum3(String st3) {
  int count = 0;
  String st = "itcoot";
  for (int i = 0; i < st3.length(); i++) {
   int t = st3.indexOf(st, i);
   if (t != -1) {
    System.out.println("字符串出现的索引为:" + t);
    // System.out.println(str.substring(t,t+"itcoot".length()));//此句话是验证是否匹配的,它的结果是"itcoot"
    count++;
    i = t;
   }
  }
  System.out.println(st + "出现的次数为:" + count);
 }

 private static void getNum4(String st4) {
  for (int r = 0; r < st4.length() - 1; r++) {
    for (int i = r + 1; i <= st4.length(); i++) {
    if (i <= st4.length()) {
     String dd = st4.substring(r, i);
     if (st4.indexOf(dd) != -1) {
      String tmps = st4.replaceAll(dd, "");
      int len = (st4.length() - tmps.length()) / dd.length();
      if (len > 1) {// 只有大于一次的才记录
       System.out.println(dd + "重复出现的次数:" + len);
      }
     }
    }
   }
  }

 }
}

 再见



 

---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima