- public class Test06 {
- /*
- *取出一个字符串中字母出现的次数。如:"abcdekka27qoq" a(2)b(1)k(2)...
- */
- /*
- public static void main(String[] args) {
- count("abcdekka27qoq");
- }
- public static void count(String string) {
- String s1 = "";
- char[] arr = string.toCharArray();
- int i = 0;
- for (char c : arr) {
- if (Character.isLetter(c)){
- char[] arr1 = s1.toCharArray(); //这里是把s1转成数组
- int sign=1; //标记
- for (int j = 0; j < arr1.length;j++ ) //
- {来信 //
- if (c==(arr1[j])) //是否已经计算过
- { //
- sign=0; //是已经计算过就把sign置0
- break; //
- }
- else //不是就把sign置1;
- sign=1;
- } //如果sign==1就表示这个字符没计算过,如果sign==0就表示这个字符已经计算过了
- if(sign==1)
- {
- i = countTime(c, arr);
- s1 = s1 + c+"("+ i +")";
- // System.out.println(s1);
- }
- }
- }
- System.out.println(s1);
- }
- private static int countTime(char key, char[] arr) {
- //char[] arr = string.toCharArray();
- int times = 0;
- for (int i = 0; i < arr.length; i++ ) {
- if (key==(arr[i])){
- times++;
- }
- }
- return times;
- }
- }
复制代码 这样的题用集合来做是非常方便的
思路是先要有一个查找的字符,然后又有一个这个字符对应的出现的次数,于是我们就可以想到使用TreeMap集合,key为字符,出现次数为value;
实现代码如下:
class Test06
{
public static void main(String[] args)
{
String str = new String("abaaacdefgabcd");
TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();
char[] arr = str.toCharArray();
int times=0;
for(char c: arr)
{
for(int i = 0;i<arr.length;i++)
{
if(c==arr)
times++;
}
tm.put(Character.valueOf(c),Integer.valueOf(times));
times=0;
}
StringBuilder strb = new StringBuilder();
Set<Character> ts = tm.keySet();
Iterator<Character> it = ts.iterator();
while(it.hasNext())
{
Character key = (Character)it.next();
Integer value = (Integer)tm.get(key);
strb.append(key+"("+value+")");
}
System.out.println(strb.toString());
}
}
|