---------------------- 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.youkuaiyun.com/heima