📌  相关文章
📜  输入字符串出现的最大字符|组 2

📅  最后修改于: 2021-10-27 09:12:19             🧑  作者: Mango

给定一个包含小写字符的字符串。任务是打印输入字符串出现次数最多的字符。如果 2 个或更多字符出现相同的次数,则打印按字典顺序(按字母顺序)最低的(第一个)字符。
例子:

在上一篇文章中,如果出现最多次数的字符不止一个,则返回任何一个字符。在这篇文章中,返回了所有字符字典序最小的字符。
方法:声明一个freq[26]数组,用作哈希表来存储输入字符串中每个字符的频率。在字符串迭代并为每个字符增加freq[s[i]]的计数。T 从左到右遍历freq[]数组并跟踪到目前为止具有最大频率的字符。 freq[i] 处的值表示字符(i + ‘a’) 的频率。
下面是上述方法的实现:

C++
// C++ implementation to find
// the maximum occurring character in
// an input string which is lexicographically first
#include 
using namespace std;
 
// function to find the maximum occurring character in
// an input string which is lexicographically first
char getMaxOccurringChar(char str[])
{
    // freq[] used as hash table
    int freq[26] = { 0 };
 
    // to store maximum frequency
    int max = -1;
 
    // to store the maximum occurring character
    char result;
 
    // length of 'str'
    int len = strlen(str);
 
    // get frequency of each character of 'str'
    for (int i = 0; i < len; i++)
        freq[str[i] - 'a']++;
 
    // for each character, where character is obtained by
    // (i + 'a') check whether it is the maximum character
    // so far and accodingly update 'result'
    for (int i = 0; i < 26; i++)
        if (max < freq[i]) {
            max = freq[i];
            result = (char)(i + 'a');
        }
 
    // maximum occurring character
    return result;
}
 
// Driver Code
int main()
{
    char str[] = "sample program";
    cout << "Maximum occurring character = "
         << getMaxOccurringChar(str);
    return 0;
}


Java
// Java implementation to find
// the maximum occurring character in
// an input string which is lexicographically first
 
class GFG {
 
// function to find the maximum occurring character in
// an input string which is lexicographically first
    static char getMaxOccurringChar(char str[]) {
        // freq[] used as hash table
        int freq[] = new int[26];
 
        // to store maximum frequency
        int max = -1;
 
        // to store the maximum occurring character
        char result = 0;
 
        // length of 'str'
        int len = str.length;
 
        // get frequency of each character of 'str'
        for (int i = 0; i < len; i++) {
            if (str[i] != ' ') {
                freq[str[i] - 'a']++;
            }
        }
 
        // for each character, where character is obtained by
        // (i + 'a') check whether it is the maximum character
        // so far and accodingly update 'result'
        for (int i = 0; i < 26; i++) {
            if (max < freq[i]) {
                max = freq[i];
                result = (char) (i + 'a');
            }
        }
 
        // maximum occurring character
        return result;
    }
 
// Driver Code
    public static void main(String[] args) {
        char str[] = "sample program".toCharArray();
        System.out.println("Maximum occurring character = "
                + getMaxOccurringChar(str));
    }
}
 
// This code is contributed by 29AjayKumar


Python3
# Python 3 implementation to find the
# maximum occurring character in an input
# string which is lexicographically first
 
# function to find the maximum occurring
# character in an input string which is
# lexicographically first
def getMaxOccurringChar(str):
     
    # freq[] used as hash table
    freq = [0 for i in range(100)]
 
    # to store maximum frequency
    max = -1
 
    # to store the maximum occurring
    # character length of 'str'
    len__ = len(str)
 
    # get frequency of each character of 'str'
    for i in range(0, len__, 1):
        freq[ord(str[i]) - ord('a')] += 1
 
    # for each character, where character
    # is obtained by (i + 'a') check whether
    # it is the maximum character so far and
    # accodingly update 'result'
    for i in range(26):
        if (max < freq[i]):
            max = freq[i]
            result = chr(ord('a') + i)
 
    # maximum occurring character
    return result
 
# Driver Code
if __name__ == '__main__':
    str = "sample program"
    print("Maximum occurring character =",
                 getMaxOccurringChar(str))
     
# This code is contributed by
# Surendra_Gangwar


C#
// C# implementation to find
// the maximum occurring character in
// an input string which is lexicographically first
  
using System;
class GFG {
  
// function to find the maximum occurring character in
// an input string which is lexicographically first
    static char getMaxOccurringChar(string str) {
        // freq[] used as hash table
        int[] freq = new int[26];
  
        // to store maximum frequency
        int max = -1;
  
        // to store the maximum occurring character
        char result = (char)0;
  
        // length of 'str'
        int len = str.Length;
  
        // get frequency of each character of 'str'
        for (int i = 0; i < len; i++) {
            if (str[i] != ' ') {
                freq[str[i] - 'a']++;
            }
        }
  
        // for each character, where character is obtained by
        // (i + 'a') check whether it is the maximum character
        // so far and accodingly update 'result'
        for (int i = 0; i < 26; i++) {
            if (max < freq[i]) {
                max = freq[i];
                result = (char) (i + 'a');
            }
        }
  
        // maximum occurring character
        return result;
    }
  
// Driver Code
    public static void Main() {
        string str = "sample program";
        Console.WriteLine("Maximum occurring character = "
                + getMaxOccurringChar(str));
    }
}


Javascript


输出:

Maximum occurring character = a

时间复杂度: O(n)。
辅助空间: O(1)。
资料来源: Sabre 采访体验 | 2套

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程