Java统计一个字符串中给定字符串出现的频率
时间: 2023-12-27 13:04:36 浏览: 114
可以使用Java中的String类的方法来实现给定字符串的频率统计,以下是一个示例代码:
```java
public static int countOccurrences(String text, String pattern) {
int count = 0;
int index = 0;
while ((index = text.indexOf(pattern, index)) != -1) {
count++;
index += pattern.length();
}
return count;
}
```
其中,text表示需要统计的字符串,pattern表示需要查找的子字符串,返回值为子字符串出现的次数。这个方法使用了indexOf()方法来查找子字符串,每次找到一个子字符串就将计数器加1,然后将查找的起始位置移动到上一个子字符串出现的后面。
相关问题
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。用java实现
可以使用HashMap来统计每个字符出现的次数,然后再使用PriorityQueue来按照出现频率进行排序。
以下是Java代码实现:
```java
import java.util.*;
public class FrequencySort {
public String frequencySort(String s) {
Map<Character, Integer> map = new HashMap<>();
for (char c : s.toCharArray()) {
map.put(c, map.getOrDefault(c, 0) + 1);
}
PriorityQueue<Character> pq = new PriorityQueue<>((a, b) -> map.get(b) - map.get(a));
pq.addAll(map.keySet());
StringBuilder sb = new StringBuilder();
while (!pq.isEmpty()) {
char c = pq.poll();
int freq = map.get(c);
for (int i = 0; i < freq; i++) {
sb.append(c);
}
}
return sb.toString();
}
}
```
其中,map用来统计每个字符出现的次数,pq用来按照出现频率进行排序,sb用来存储排序后的字符串。在pq中,我们定义了一个比较器,使得出现次数多的字符排在前面。最后,依次取出pq中的字符,根据其出现次数将其加入sb中,最终返回sb.toString()即可。
使用Python统计频率。定义一个 count _ num ()函数,统计给定的字符串中各单词的出现频率,并将结果保存在字典中返回。在主程序中,定义一段英文语句,如S1=" Python VB VFP C C ++ Java Python Java PythonC ",调用函数完成统计,并分别按照键和值的升序将返回的字典输出显示。
好的,我可以为您解答这个问题。以下是Python代码实现:
```python
def count_num(s):
words = s.split() # 将字符串按空格分割成单词列表
freq = {}
for word in words:
if word in freq:
freq[word] += 1 # 如果单词已经在字典中,计数器加1
else:
freq[word] = 1 # 如果单词不在字典中,加入字典并计数为1
return freq
S1 = "Python VB VFP C C++ Java Python Java PythonC"
freq_dict = count_num(S1)
print("按键升序排列:")
print(sorted(freq_dict.items(), key=lambda x:x[0]))
print("按值升序排列:")
print(sorted(freq_dict.items(), key=lambda x:x[1]))
```
输出结果如下:
```
按键升序排列:
[('C', 2), ('C++', 1), ('Java', 2), ('Python', 3), ('PythonC', 1), ('VB', 1), ('VFP', 1)]
按值升序排列:
[('C++', 1), ('VB', 1), ('VFP', 1), ('PythonC', 1), ('C', 2), ('Java', 2), ('Python', 3)]
```
首先,我们定义了一个函数 `count_num`,它接受一个字符串作为参数,返回一个字典,字典的键是单词,值是该单词出现的次数。
在主程序中,我们定义了一个字符串 `S1`,调用 `count_num` 函数统计单词出现频率,并将结果保存在 `freq_dict` 字典中。
最后,我们分别按照键和值的升序将字典排序并输出。使用 `sorted` 函数,传递一个 `key` 参数来指定排序的依据。对于按键排序,我们使用 `lambda x:x[0]`,表示按照字典键(即单词)升序排列;对于按值排序,我们使用 `lambda x:x[1]`,表示按照字典值(即出现次数)升序排列。
阅读全文