统计字符串中出现次数最多的字母的次数,如果有多个重复的,都求出

package javastudy;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.TreeSet;

public class Test1 {
	public static void main(String [] args){
		String str = "aacdggdhrdhgsjrsovoiwimtcpiq";
		new Test1().doString(str) ;
	}
	public void doString (String str){
		char [] chars = str.toCharArray() ;
		ArrayList<String> lists = new ArrayList<String>() ;
		TreeSet<String> set = new TreeSet<String>();
		for (int i=0;i<chars.length;i++){
			lists.add(String.valueOf(chars[i]));
			set.add(String.valueOf(chars[i]));
		}
		//有序且无重复,找到所有出现的
		System.out.println("set:"+set);
		//有序可以有重复,arraylist可以快速排序
		Collections.sort(lists) ;
		System.out.println("lists:"+lists) ;

		//得到排序后的字符串
		StringBuffer sb = new StringBuffer() ;
		for (int i=0;i<lists.size();i++){
			sb.append(lists.get(i)) ;
		}
		str = sb.toString();
		System.out.println("str after sorted:"+str) ;

		//统计了第一个出现最多的char的次数 ,记下出现最多的次数 为max,对应的char为maxString
		int max =0;
		String maxString ="";
		ArrayList<String> maxList = new ArrayList<String>();
		Iterator itr = set.iterator() ;
		while (itr.hasNext()) {
			String os= (String)itr.next() ;
			int begin = str.indexOf(os) ;
			int end = str.lastIndexOf(os) ;
			int value = end-begin+1;
			if (value>max){
				max= value ;
				maxString = os ;
				maxList.add(os) ;
			}else if (value == max) {
				maxList.add(os);
			}
		}

		//找到最大的位置
		int index = 0;
		for (int i=0;i<maxList.size();i++){
			if (maxList.get(i).equals(maxString)){
				index =i;
				break ;
			}
		}
		System.out.println("max data");
		for (int i=index;i<maxList.size();i++){
			System.out.println(maxList.get(i)+"");
		}
		System.out.println() ;
		System.out.println("max:"+ max) ;

	}
}

输出结果为

set:[a, c, d, g, h, i, j, m, o, p, q, r, s, t, v, w]
lists:[a, a, c, c, d, d, d, g, g, g, h, h, i, i, i, j, m, o, o, p, q, r, r, s, s, t, v, w]
str after sorted:aaccdddggghhiiijmoopqrrsstvw
max data
d
g
i

  

时间: 2024-11-03 01:28:13

统计字符串中出现次数最多的字母的次数,如果有多个重复的,都求出的相关文章

c语言代码编程题汇总 :统计字符串中的大写和小写字母的个数

统计字符串中的大写和小写字母的个数 程序代码如下: 1 /* 2 2017年3月6日19:42:21 3 功能:统计字符串中的大写和小写字母的个数 4 */ 5 6 #include "stdio.h" 7 void fun (char *,int *,int *); 8 9 int main (void) 10 { 11 int m = 0,n = 0; 12 int *Pm = &m, *Pn = &n; 13 char s[100]; 14 printf (&qu

统计字符串中出现最多的字母

转载自喜欢JS的无名小站 let str = "aabbccdd", 统计字符串中出现最多的字母 方法一 关键方法为 String.prototype.charAt 核心理念为:先遍历字符串中所有字母,统计字母以及对应显示的次数,最后是进行比较获取次数最大的字母. /** * 获取字符串中出现次数最多的字母 * @param {String} str */ function getChar(str) { if (typeof str !== 'string') return // 判断

算法题之统计字符串中出现最多的字母

算法题之统计字符串中出现最多的字母 代码: <script> var arr = []; function txt(str) { var j = 0; for(var i = 0; i < str.length; i++) { if(arr.indexOf(str[i]) == -1) { arr.push(str[i]); } } for(var j = 0; j < arr.length; j++) { var s = arr[j]; var dd = str.split(s)

如果用JS得到字符串中出现次数最多的字母

一个字符串String=“adadfdfseffserfefsefseetsdg”,找出里面出现次数最多的字母和出现的次数. 经典的解答思路为:取出字符串的第一个字符(首字母),利用的字符串的 replace 方法将符合正则表达式(第一个字符)替代为空,此字母出现的次数为原始的字符串长度减去替代后的字符串长度.循环迭代找出长度最长的字母. 源码: <script type="text/javascript">   var str ="adadfdfseffserf

编写一个程序,统计输入字符串中每一个小写英文字母出现的次数

import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/1 22:18 * @description: * @version:$ */ /*编写一个程序,统计输入字符串中每一个小写英文字母出现的次数*/ public class page0901 { public static void main(String[] args) { /*首先,输入一段字符串作为字符数组*/ System.out.p

python之统计字符串中字母出现次数

dic=dict() d={} s=set() s='helloworld' (1)d=dict() for x in s: if x not in d.keys(): d[x]=1 else: d[x]=d[x]+1 print(d) (2)d2=dict() for x in s: d2[x]=d2.get(x,0)+1 print(d2) (3)d3=dict() for x in s: d3[x]=s.count(x) print(d3) 上面一共给出了三种方法,均是以字典的形式输出,但

查找字符串中出现次数最多的字母和出现的次数. 示例: var str =&quot; fdadffddfdffj&quot;; ====&gt; 出现次数最多的是f, 出现了 6 次;

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script> var a = 'abcdeeffffffjjjjjjjjjjj'; var b = {}; for (var i = 0;i < a.length;i++){ if (!b[a[i]]) { b[

技巧之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) { /* */

js查询一个字符串内出现次数最多的字母

字符串 str = "ahasdaskdasdasjdnas"; 问题:将此字符串出现次数最多的字母打印出来: 思路:申请一个json对象,遍历字符串将字符串的字母作为属性添加到json对象上,字母出现的次数做属性值:   遍历对象属性,将属性值最大的打印即可 代码: function index(str){ var json = {}; // 先声明一个json形式的变量来存取字符串的元素,{a:1,b:3,c:4} for (var j=0;j<str.length;j++)