在一个字符串中可能包含a-z中的多个字符,如有重复,如String data = "shfksjgljsfsfs",求出现次数最多的那个字母及次数,如有多个重复的则求出。
思路:
1.引入TreeSet,通过集合快速找到所有出现的字符。
2.引入ArrayList,为了快速排序,再通过StringBuffer生成排序后的字符串。
3.通过String Api中基本方法, indexOf lastIndexOf来计算TreeSet中每个字符串出现的最大值。
4.如果出现相同的则把相同的都记录在一个列表中。
5.记录第一个出现次数最多的字符(为了计算多个字符串相同的情况)。
6.计算最大字符串列表中哪些才是真正出现次数最多的。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.TreeSet;
public class Test2 {
public static void main(String args[]){
String input = "adsfsafasdfjlfdjgkdf";
new Test2().doString(input);
}
public void doString(String input){
char[] chars = input.toCharArray();
ArrayList lists = new ArrayList();
TreeSet set = new TreeSet();
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没有重复的元素
Collections.sort(lists);
System.out.println(lists); //sort排序
StringBuffer sb = new StringBuffer();
for(int i=0;i<lists.size();i++){
sb.append(lists.get(i));
}
input = sb.toString();
System.out.println(input);
int max = 0;
String maxString = "";
ArrayList maxlist = new ArrayList();
Iterator its = set.iterator();
while(its.hasNext()){
String os = (String)its.next();
int begin = input.indexOf(os);
int end = input.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("出现最多的字符分别是:");
for(int i=index;i<maxlist.size();i++){
System.out.println(maxlist.get(i) + " ");
}
System.out.println();
System.out.println("出现最多的次数为" + max);
}
}
分享到:
相关推荐
本主题关注的是如何查找一个字符串中出现重复次数最多的字符。这是一个典型的字符串处理问题,对于理解字符串操作和优化算法能力的提升非常有帮助。 首先,我们要明确问题的目标:给定一个字符串,找出其中出现频率...
假设有一个输入字符串 `str`,我们需要找到在该字符串中出现次数最多的一个或多个连续子串,并统计它们出现的次数。 #### 1.3 输入输出格式 - **输入**:一个字符串 `str`。 - **输出**:连续出现次数最多的子串...
在Visual FoxPro(VFP)中,统计字符串中特定字符的重复出现次数是一项常见的文本处理任务,这在数据处理和分析中非常有用。这个任务可以通过编程实现,不仅可以应用于单个字符串,还可以扩展到统计数据库表中某个...
select f_find('Ap@2233ll@@l@@','@') from dual 返回结果为5,代表‘@’在该字符串中出现5次。 同理 select f_find('Ap@223SWEQQQ3ll@@l@@','Q') from dual---返回3,代表Q在字符串中出现了3次, select f_find('我...
在本例中,字符串 `"djasjdklasjdklasjaiurakczkcnss"` 被存储为一个 `String` 对象,并通过 `toCharArray()` 方法转换成字符数组 `char[] c`。这一步是将字符串拆分为单个字符的基础。 #### 集合框架 - **HashSet*...
在IT领域,尤其是在编程与数据处理中,统计字符串中特定字符的出现次数是一个常见的需求。本文将深入探讨几种实现这一功能的方法,并通过实际代码示例和性能对比分析,帮助读者理解每种方法的优劣,以便在实际开发中...
在软件网络技术领域中,查找字符串中重复的子字符串积重复的次数是一个常见的问题,本文将通过 Java 语言实现这个功能,并对其中的知识点进行详细的解释。 知识点一:字符串操作 在 Java 中,字符串是一个非常重要...
在提供的文件中,`strfind.exe`很可能是一个执行程序,用于执行实际的重复字符串查找操作。它可能接受输入文件、设置参数(如重复长度和排除字符串)并输出结果。而`list.txt`可能是包含要分析的文本数据的文件,...
在Java编程中,统计字符串中出现次数最多的字符及其出现次数是一项常见的任务,尤其在数据处理和文本分析领域。本问题的解决方案使用了多种Java集合框架类,包括`TreeSet`、`ArrayList`、`HashMap`和`StringBuffer`...
在C#编程语言中,处理字符串中的重复字符是一项常见的任务,尤其在数据清理、文本分析或用户输入验证等场景中。本项目提供了完整的源代码,可在Visual Studio 2008环境下编译并通过测试,展现出强大的功能和扩展性。...
根据给定的信息,我们需要实现一个C语言函数`void fun(char *s,char *t,char *p)`,该函数的功能是:将未在字符串`s`中出现、而在字符串`t`中出现的字符形成一个新的字符串并存储在指针`p`指向的空间内。新字符串中...
从上面的代码可以看到,我们首先使用一个循环来遍历字符串s1,在循环中,我们使用另一个循环来检查当前字符是否在字符串s2中,如果不在,则将其保留在字符串s1中。最后,我们将字符串s1的结尾字符设置为0,表示字符...
1. **提取单个字符**:利用 `substring` 方法提取字符串中的第一个字符。 2. **替换字符**:使用 `replaceAll` 方法将已统计的字符全部替换为空字符串,从而计算该字符的出现次数。 3. **循环统计**:重复上述步骤,...
总的来说,这个"DEMO"项目是关于字符串处理的一个实例,对于学习和理解Java中字符串操作以及字符串查找算法具有一定的实践价值。通过这个示例,开发者可以学习如何在实际编程中解决此类问题,提高对字符串操作的掌握...
在编程领域,经常需要处理字符串数据,而统计字符串中出现次数最多的字符是常见的问题之一。这个问题可以通过使用哈希表(Hash Table)或者对象(Object)来解决,因为它们可以提供快速查找和更新元素的能力。以下是...
同时,如果想计算一个子字符串在主字符串中出现的次数,可以使用自定义函数`countInstances`: ```javascript function countInstances(mainStr, subStr) { var count = 0; var offset = 0; do { offset = ...
在本示例中,我们将讨论如何利用正则表达式来检测字符串中重复出现的词。这个功能在数据清洗、文本分析、日志处理等多种场景下都非常实用。 首先,我们要理解正则表达式的概念。正则表达式是由特殊字符和普通字符...
在IT领域,尤其是在编程与数据处理中,统计字符串中不同字符出现的频度是一个常见的需求。这不仅有助于文本分析,还能应用于密码学、自然语言处理等多个方面。下面,我们将深入探讨这一主题,包括其实现原理、算法...
根据给定的信息,本文将详细解释如何在C#中实现字符串匹配并计算特定子字符串在一个字符串中出现的次数。此方法对于文本处理、数据分析以及任何需要处理字符串的应用都非常有用。 ### 如何判断字符串的个数 #### ...
要找到一个字符串中连续重复次数最多的子串,我们需要遍历字符串并比较相邻的子串。算法大致可以分为以下几个步骤: 1. 初始化:设置两个变量,一个用于保存当前子串,另一个用于记录最大重复次数。此外,还需要一...