Java 统计每个唯一字符的出现次数
如何找到字符串中每个唯一字符的出现次数?最多可以使用一个循环。请发布您的解决方案,谢谢。这是一个家庭作业,因此无法发布代码,但这里有一种方法:Java 统计每个唯一字符的出现次数,java,string,Java,String,如何找到字符串中每个唯一字符的出现次数?最多可以使用一个循环。请发布您的解决方案,谢谢。这是一个家庭作业,因此无法发布代码,但这里有一种方法: 逐字符遍历字符串 将char放入hashmap键中,并将其值初始化为1(count)。现在,如果再次遇到char,则更新该值(count+1)。否则,将新字符添加到键并再次设置其值(计数=1) 因为这听起来像是一个家庭作业问题,让我们试着复习一下如何手工解决这个问题。一旦我们这样做了,让我们看看如何在代码中实现它 需要做什么? 让我们使用以下字符串: i
因为这听起来像是一个家庭作业问题,让我们试着复习一下如何手工解决这个问题。一旦我们这样做了,让我们看看如何在代码中实现它 需要做什么? 让我们使用以下字符串:
it is nice and sunny today.
为了计算每个字符在上述字符串中出现的次数,我们应该:
i
,因此我们可以在一个表中注意到,i
到目前为止出现了一次:
'i' -> 1
其次,我们发现另一个新字符t
,因此我们可以在上表中添加该字符:
'i' -> 1
't' -> 1
第三,一个空格,再重复一遍
'i' -> 1
't' -> 1
' ' -> 1
第四,我们遇到一个i
,它恰好已经存在于表中。因此,我们希望检索现有计数,并将其替换为现有计数+1:
'i' -> 2
't' -> 1
' ' -> 1
等等
如何翻译成代码?
将上述内容转换为代码,我们可以编写如下内容:
- 对于字符串中的每个字符
- 检查是否已遇到该字符
- 如果没有,那么记住新角色并说我们曾经遇到过它
- 如果是,则获取遇到它的次数,并将其递增1
- 检查是否已遇到该字符
Map
可以实现所需的功能
循环(例如for
或while
循环)可用于迭代字符串中的字符
Map
(例如HashMap
)可用于跟踪字符出现的次数。在这种情况下,键将是字符,值将是字符出现次数的计数
祝你好运 给你!我做了一个粗略的程序,计算每个独特字符的出现次数
Here you go! I have done a rough program on Count occurrences of each unique character
public class CountUniqueChars{
public static void main(String args[]){
HashMap<Character, Integer> map;
ArrayList<HashMap<Character, Integer>> list = new ArrayList<HashMap<Character,Integer>>();
int i;
int x = 0;
Boolean fire = false;
String str = "Hello world";
str = str.replaceAll("\\s", "").toLowerCase();
System.out.println(str.length());
for(i=0; i<str.length() ; i++){
if(list.size() <= 0){
map = new HashMap<Character, Integer>();
map.put(str.charAt(i), 1);
list.add(map);
}else{
map = new HashMap<Character, Integer>();
map.put(str.charAt(i), 1);
fire = false;
for (HashMap<Character, Integer> t : list){
if(t.containsKey(str.charAt(i)) == map.containsKey(str.charAt(i))){
x = list.indexOf(t);
fire = true;
map.put(str.charAt(i), t.get(str.charAt(i))+1);
}
}
if(fire){
list.remove(x);
}
list.add(map);
}
}
System.out.println(list);
}
}
公共类CountUniqueChars{
公共静态void main(字符串参数[]){
HashMap图;
ArrayList=新建ArrayList();
int i;
int x=0;
布尔火=假;
String str=“Hello world”;
str=str.replaceAll(“\\s”,”).toLowerCase();
System.out.println(str.length());
对于(i=0;iHomework?向我们展示你做了什么。如何找到你已经做了什么?你可以先尝试解决自己的问题,然后就你遇到的问题提问。请发布你所做的,谢谢。@Bert F我的解决方案类似于@zengr,我想知道是否有更好的方法,所以我将问题发布在这里。谢谢!)(确认,15个字符的过滤器…)谢谢你的好话:)谢谢:-),这实际上是我几天前回答的一个面试问题,你的答案和我的类似。我把这个问题贴在这里,因为我想知道其他程序员对此的想法。我想hashmap是这个问题的最佳答案。