java怎么实现统计一个字符串中字符出现的次数

问题:假设字符串仅仅保护a-z 的字母,java怎么实现统计一个字符串中字符出现的次数?而且,如果压缩后的字符数不小于原始字符数,则返回。

处理逻辑:首先拆分字符串,以拆分出的字符为key,以字符出现次数为value,存入Map中。

源码如下:

 1 import java.util.HashMap;
 2 import java.util.Iterator;
 3 import java.util.Map;
 4
 5 public class TestCompress {
 6
 7     public static void main(String[] args) {
 8         String str = "aaabbbcccdfb";
 9         compress(str);
10     }
11
12     public static void compress(String str) {
13         Map<String, Integer> count = new HashMap<String, Integer>();
14         String[] myStrs = str.split("");
15         for (int i = 0; i < myStrs.length; i++) {
16             int totalNum = 1;
17             String currentStr = myStrs[i];
18             if (count.containsKey(currentStr)) {
19                 totalNum = count.get(currentStr) + 1;
20             }
21             count.put(currentStr, totalNum);
22         }
23         int num = count.size();
24         System.out.println("压缩结果");
25         if (num == myStrs.length) {
26             System.out.println("各个字母都不一样,直接返回");
27             System.out.println(str);
28             return;
29         }
30         String result = "";
31         Iterator<Map.Entry<String, Integer>> it = count.entrySet().iterator();
32         while (it.hasNext()) {
33             Map.Entry<String, Integer> entry = it.next();
34             result = result + entry.getKey() + entry.getValue();
35         }
36         System.out.println(result);
37     }
38 }

运行结果:

1 压缩结果
2 a3b4c3d1f1

原文地址:https://www.cnblogs.com/east7/p/9297194.html

时间: 2024-10-12 04:51:31

java怎么实现统计一个字符串中字符出现的次数的相关文章

黑马程序员——统计一个字符串中各个字符出现的次数

统计一个字符串中各个字符出现的次数 import java.util.Iterator; import java.util.Set; import java.util.TreeMap; public class TreeMapDemo { //统计一个字符串中相应字符出现的次数 public static void main(String[] args) { // String s = "aagfagdlkerjgavpofjmvglk我是你的"; //调用自定义方法来 统计相应字符出

统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数,其他字符出现的次数。

/** * A:案例演示 * 需求:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数,其他字符出现的次数. * [email protected]#$%^ * 分析:字符串是有字符组成的,而字符的值都是有范围的,通过范围来判断是否包含该字符 * 如果包含就让计数器变量自增 */ public static void main(String[] args) { String s = "[email protected]#$%^"; int big = 0; int smal

统计一个字符串中第一次出现且频率最高的字符

统计一个字符串中第一次出现且频率最高的字符. public static char statMostRateChar(String str) { if (str != null && !"".equals(str)) { int charsStat[] = new int[128]; int charsFirstIdx[] = new int[128]; int strLen = str.length(); for (int ch = 0; ch < 128;ch

字符串之“统计一个字符串中单词的个数”

题目:统计一个字符串中单词的个数 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开 输入:my name is jacky 输出:the number of word is 4 代码如下: #include <stdio.h> int main(int argc, char *argv[]) { char str[80]; int i=0,num=0,flag=0; char c; gets(str); while((c=str[i])!='\0') { if(c==' ') flag

统计一个字符串中的单词的个数,并打印各个单词

/*测试数据:Shen zhen is a beautiful city!*/ /*运行结果:Word:6 Shen zhen is a beautiful city!*/ #include<stdio.h> #define SIZE 1000 void wordCount(char *str) { int count = 0, flag = 0; char *p = str; while (*p != '\0'){ while (*p == 32){ if (*(p + 1) == 0){/

技巧之C#统计字符串中字符出现的次数(转)

方法1.自定义类 class CharNum { private char c; private int num; public char C { get { return c; } } public int Num { get { return num; } set { num = value; } } public CharNum(char ch) { this.c = ch; this.num = 1; } } static void Main(string[] args) { /* */

算法积累(字符串转换驼峰,判断一个字符串中那个字母出现次数最多,并且出现了几次)

因为算法比较烂,所以想做一下这方面的积累. 尽量能够每天学习一个新算法吧.(不过估计很悬) 好吧,今天第一个是字符串转换驼峰 直接上代码 var str = 'toupper-case'; var arr = str.split('-'); //toupper,case for (var i = 1; i < arr.length; i++) { //把除了第一个数组后面的数组的第一个值设置为大写然后大写字母和去掉第一个字符的剩下的字符进行拼合 arr[i] = arr[i].charAt(0)

Map集合应用 取出一个字符串中字母出现的次数。如:字符串:&quot;abcdekka27qoq&quot;&#160;,输出格式为:a(2)b(1)k(2)...

package com.swift; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class Test3_String_char { public static void main(String[] args) { /* * 第4题: 取出一个字符串中字母出现的次数.如:字符串:

找出一个字符串中最长重复次数的子字符串,并计算其重复次数

原题 找出一个字符串中最长重复次数的子字符串,并计算其重复次数.例如:字符串"abc fghi bc kl abcd lkm abcdefg",并返回"abcd"和2. 我的思路 为了方便表述,我们使用变量src作为原字符串,sub_str作为子字符串. 由于题目要求寻找至少重复2次的最长的子字符串,重点在于最长的子字符串,而不在于重复的最多次数.因此我们可以从长度最长的字符串入手,计算其重复次数.只要重复达到2次,即可返回该字符串. 显然长度最长的子字符串就是原串