给定一个字符串序列,任务是找出给定序列中第二大重复(或频繁)的字符串。(考虑到没有两个单词是第二大重复的,总会有一个单词)。
例子:
Input : {"aaa", "bbb", "ccc", "bbb",
"aaa", "aaa"}
Output : bbb
Input : {"geeks", "for", "geeks", "for",
"geeks", "aaa"}
Output : for
询问:亚马逊
- 将所有单词存储在一个映射中,它们的出现以单词为键,出现的次数为值。
- 找到地图中第二大的值。
- 再次遍历地图,返回出现值等于第二个最大值的单词。
C++
// C++ program to find out the second
// most repeated word
#include
using namespace std;
// Function to find the word
string secMostRepeated(vector seq)
{
// Store all the words with its occurrence
unordered_map occ;
for (int i = 0; i < seq.size(); i++)
occ[seq[i]]++;
// find the second largest occurrence
int first_max = INT_MIN, sec_max = INT_MIN;
for (auto it = occ.begin(); it != occ.end(); it++) {
if (it->second > first_max) {
sec_max = first_max;
first_max = it->second;
}
else if (it->second > sec_max &&
it->second != first_max)
sec_max = it->second;
}
// Return string with occurrence equals
// to sec_max
for (auto it = occ.begin(); it != occ.end(); it++)
if (it->second == sec_max)
return it->first;
}
// Driver program
int main()
{
vector seq = { "ccc", "aaa", "ccc",
"ddd", "aaa", "aaa" };
cout << secMostRepeated(seq);
return 0;
}
Java
// Java program to find out the second
// most repeated word
import java.util.*;
class GFG
{
// Method to find the word
static String secMostRepeated(Vector seq)
{
// Store all the words with its occurrence
HashMap occ = new HashMap(seq.size()){
@Override
public Integer get(Object key) {
return containsKey(key) ? super.get(key) : 0;
}
};
for (int i = 0; i < seq.size(); i++)
occ.put(seq.get(i), occ.get(seq.get(i))+1);
// find the second largest occurrence
int first_max = Integer.MIN_VALUE, sec_max = Integer.MIN_VALUE;
Iterator> itr = occ.entrySet().iterator();
while (itr.hasNext())
{
Map.Entry entry = itr.next();
int v = entry.getValue();
if( v > first_max) {
sec_max = first_max;
first_max = v;
}
else if (v > sec_max &&
v != first_max)
sec_max = v;
}
// Return string with occurrence equals
// to sec_max
itr = occ.entrySet().iterator();
while (itr.hasNext())
{
Map.Entry entry = itr.next();
int v = entry.getValue();
if (v == sec_max)
return entry.getKey();
}
return null;
}
// Driver method
public static void main(String[] args)
{
String arr[] = { "ccc", "aaa", "ccc",
"ddd", "aaa", "aaa" };
List seq = Arrays.asList(arr);
System.out.println(secMostRepeated(new Vector<>(seq)));
}
}
// This program is contributed by Gaurav Miglani
Python3
# Python3 program to find out the second
# most repeated word
# Function to find the word
def secMostRepeated(seq):
# Store all the words with its occurrence
occ = {}
for i in range(len(seq)):
occ[seq[i]] = occ.get(seq[i], 0) + 1
# Find the second largest occurrence
first_max = -10**8
sec_max = -10**8
for it in occ:
if (occ[it] > first_max):
sec_max = first_max
first_max = occ[it]
elif (occ[it] > sec_max and
occ[it] != first_max):
sec_max = occ[it]
# Return with occurrence equals
# to sec_max
for it in occ:
if (occ[it] == sec_max):
return it
# Driver code
if __name__ == '__main__':
seq = [ "ccc", "aaa", "ccc",
"ddd", "aaa", "aaa" ]
print(secMostRepeated(seq))
# This code is contributed by mohit kumar 29
C#
// C# program to find out the second
// most repeated word
using System;
using System.Collections.Generic;
class GFG
{
// Method to find the word
static String secMostRepeated(List seq)
{
// Store all the words with its occurrence
Dictionary occ =
new Dictionary();
for (int i = 0; i < seq.Count; i++)
if(occ.ContainsKey(seq[i]))
occ[seq[i]] = occ[seq[i]] + 1;
else
occ.Add(seq[i], 1);
// find the second largest occurrence
int first_max = int.MinValue,
sec_max = int.MinValue;
foreach(KeyValuePair entry in occ)
{
int v = entry.Value;
if( v > first_max)
{
sec_max = first_max;
first_max = v;
}
else if (v > sec_max &&
v != first_max)
sec_max = v;
}
// Return string with occurrence equals
// to sec_max
foreach(KeyValuePair entry in occ)
{
int v = entry.Value;
if (v == sec_max)
return entry.Key;
}
return null;
}
// Driver method
public static void Main(String[] args)
{
String []arr = { "ccc", "aaa", "ccc",
"ddd", "aaa", "aaa" };
List seq = new List(arr);
Console.WriteLine(secMostRepeated(seq));
}
}
// This code is contributed by Rajput-Ji
输出:
ccc
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。