给你一个任意字符串,你去打印出它所有字符出现的次数??

解决这个问题,首先得解决2个小问题:

1、因为是任意给定的任意字符串,你怎样知道需要打印的次数?

2、用循环打印  怎样不重复打印

上个栗子:

 1 package kimi;
 2
 3 import java.util.LinkedHashMap;
 4 import java.util.Map;
 5 import java.util.Set;
 6
 7 public class Text$$$$ {
 8     public static Map<String, Integer> map = new LinkedHashMap<>();
 9
10     public static Map<String, Integer> getLetterCountByString(String string) {
11         int length = string.length();
12         String first = string.substring(0, 1);
13         string = string.replace(first, "");
14         map.put(first, length - string.length());
15         return string.length() > 0 ? getLetterCountByString(string) : map;
16     }
17
18     public static void main(String[] args) {
19         Map<String, Integer> map = getLetterCountByString("sdsdas [email protected]@ 我睡觉哦 sda3 ");
20         Set<String> set = map.keySet();
21         for (String key : set) {
22             System.out.println("key:" + key + "     value:" + map.get(key));
23         }
24     }
25 }

第15行代码运用递归的思想,不需要知道具体打印的次数,只要给定一个目标,利用三目运算符,比普通for循环减少了代码量,

运行结果如下:

key:s     value:5
key:d     value:3
key:a     value:2
key:      value:4
key:2     value:1
key:3     value:3
key:4     value:1
key:@     value:2
key:我     value:1
key:睡     value:1
key:觉     value:1
key:哦     value:1
时间: 2024-08-02 14:29:17

给你一个任意字符串,你去打印出它所有字符出现的次数??的相关文章

【20190405】算法-输入一个字符串,按字典序打印出该字符串中字符的所有排列

方法一:利用递归 利用递归求全排列的过程真的很难理解,先把代码贴上来吧 function Permutation(str) { // write code here if(!str){ return str; } let len=str.length, result=[]; str=str.split('');// 字符串的索引属性都是只读,后面要交换两个字符的话还是要先把字符串转化为数组 str.sort();// 直接把字符串按字典序排列了,后面求全排列时也会按照字典序 Permutate(

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。

package myprac.LeetCode; import java.util.ArrayList; import java.util.List; public class StringPermutation { /* public static ArrayList<String> Permutation(String str) { ArrayList<String> list = new ArrayList<>(); if(str==null || str.len

统计一个二进制字符串连续出现0或者连续出现1的最大次数

给定一个二进制的字符串,统计连续出现0或者连续出现1的最大次数. 由于需要取出最大次数,所以一旦出现连续0的时候,需要将代表出现连续1的变量置清空,反之亦然. 还需要注意的是,我们要将每次连续出现0和1的次数各自用变量保存起来.详细代码如下:

【字符串处理算法】最长连续字符及其出现次数的算法设计及C代码实现

一.需求描述 输入一个字符串,编写程序找出这个字符串中的最长连续字符,并求出其连续出现的次数. 例如,"123444445"中的最长连续字符是4,其连续出现的次数为5:"abcddef"中的最长连续字符是d,其连续出现的次数为2:"ab"中的最长连续字符是a,其连续出现的次数为1. 二.算法设计 我们可以采取逐个比较字符串中各个字符的办法来获取最长连续字符及其连续出现的次数.程序的总体流程如图1所示. 图1 程序的总体流程 三.特殊流程考虑 在编

打印出所有的“水仙花数

/*打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方. */ #include <stdio.h> void main(){      int i,ge,shi,bai;      for(i=100;i<1000;i++) {      ge=i%10;      shi=i/10%10;      bai=i/100;      if(i==ge*ge*ge+shi*

022给定一个字符串类型(string)表示的小数,打印出它的二进制表示(keep it up)

给定一个字符串类型(string)表示的小数,打印出它的二进制表示. 这个题注意字符串的合法性. 不过下面的代码没有处理那种无限循环的小数, 当出现无限循环小数时,while(other>0)可能永久为true 代码: #include <iostream> #include <string> std::string to_binary_string(const std::string& vNumStr) { std::string::size_type Pos =

java算法面试题:有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数 按值的降序排序,如果值相同则按键值的字母顺序

package com.swift; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; public class Zhongwen_Shuzi_Times { public static void main(String[] args) { /* * 有一个字符串,其中包含中文字符.英文字符和数字字符,请统计和打印出各个字符的个数 */ String str="琅琊榜fengqichanglin

有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数

1.有一个字符串,其中包含中文字符.英文字符和数字字符,请统计和打印出各个字符的个数. Map接口定义的集合又称查找表,用于存储所谓"Key-Value"映射对.Key可以看成是Value的索引,作为Key的对象在集合中不可以重复. import java.util.HashMap; import java.util.Map; public class Demo { public static void main(String[] args) throws Exception{ Str

输入一个字符串,打印出该字符串的所有排列

目录 输入一个字符串,打印出该字符串的所有排列. 题解 输入一个字符串,打印出该字符串的所有排列. 例如输入字符串abc,则输出由字符a.b.c所能排列出来的所有字符串 abc,acb,bac,bca,cab,cba. 题解 了解下排列的数学知识: 排列的定义:从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列:从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号