Java 程序:寻找最大和最小出现字符
在本教程中,我们将学习如何找到最小和最大出现字符。这里,我们将首先遍历字符串,然后计算每个元素的频率。最后,我们将打印频率最高和最低的字符。但是在进一步深入之前,如果你不熟悉字符串的概念,那么一定要查看 Java 中Strings的文章。
输入:输入字符串:苹果
输出:最大出现次数:p
最小出现次数:A
程序 1:找到最小和最大出现字符
在这个程序中,我们将看到当字符串是用户定义的时,如何计算字符串中出现的最小和最大字符。在这里,我们将要求用户初始化数组,然后我们将找出最小和最大出现字符
算法:
开始
声明字符串
请用户初始化它。
声明一个数组来存储元素的频率。
为最小和最大出现字符声明变量,并将它们赋给 0。
将字符串转换为字符数组。
对同一个循环使用两个。
使用第一个 for 循环遍历字符串中的每个字符。
选择字符,并在频率数组中将它们对应的频率初始化为 1。
使用第二个 for 循环将所选字符与字符串中的其余字符进行比较。
再次使用两个 for 循环迭代频率数组。
使用最小和最大变量存储字符串中出现的最小和最大字符数。
迭代循环,比较 freq 中存储的每个字符的计数与最小值和最大值。
如果存储在 freq 中的计数小于 min 的值,则将该计数存储在 min 中,并将相应的字符存储在 minChar 中。
如果存储在 freq 中的计数大于 max 的值,则将该计数存储在 max 中,并将相应的字符存储在 maxChar 中。
现在,最小字符将存储最小出现字符,最大字符将存储最大出现字符。
打印最少和最多出现的字符。
停止
下面的例子说明了上述算法的实现。
//Java Program to find the maximum and minimum occurring character in a string
import java.util.*;
public class Main
{
public static void main(String[] args)
{
//Take input from the user
Scanner sc=new Scanner(System.in);
System.out.println("Enter the string: ");
String str=sc.nextLine();
int[] freq = new int[str.length()];
char minChar = str.charAt(0), maxChar = str.charAt(0);
int i, j, min, max;
char string[] = str.toCharArray();
for(i = 0; i < string.length; i++)
{
freq[i] = 1;
for(j = i+1; j < string.length; j++)
{
if(string[i] == string[j] && string[i] != ' ' && string[i] != '0')
{
freq[i]++;
string[j] = '0';
}
}
}
min = max = freq[0];
for(i = 0; i <freq.length; i++)
{
if(min > freq[i] && freq[i] != '0')
{
min = freq[i];
minChar = string[i];
}
if(max < freq[i])
{
max = freq[i];
maxChar = string[i];
}
}
System.out.println("Minimum occurring character: " + minChar);
System.out.println("Maximum occurring character: " + maxChar);
}
}
输入字符串:查找最小和最大出现字符 最小出现字符:F 最大出现字符:m
程序 2:找到最小和最大出现字符
在这个程序中,我们将看到当字符串在程序中被预定义时,如何计算字符串中出现的最小和最大字符。
算法:
开始
声明字符串
初始化它。
声明一个数组来存储元素的频率。
为最小和最大出现字符声明变量,并将它们赋给 0。
将字符串转换为字符数组。
对同一个循环使用两个。
使用第一个 for 循环遍历字符串中的每个字符。
选择字符,并在频率数组中将它们对应的频率初始化为 1。
使用第二个 for 循环将所选字符与字符串中的其余字符进行比较。
再次使用两个 for 循环迭代频率数组。
使用 min 和 max 变量存储字符串中出现的最小和最大字符数。
迭代循环,比较 freq 中存储的每个字符的计数与最小值和最大值。
如果存储在 freq 中的计数小于 min 的值,则将该计数存储在 min 中,并将相应的字符存储在 minChar 中。
如果存储在 freq 中的计数大于 max 的值,则将该计数存储在 max 中,并将相应的字符存储在 maxChar 中。
现在,最小字符将存储最小出现字符,最大字符将存储最大出现字符。
打印最少和最多出现的字符。
停止
下面的例子说明了上述算法的实现。
//Java Program to find the maximum and minimum occurring character in a string
public class Main
{
public static void main(String[] args)
{
String str = "Example of minimum and maximum Character";
System.out.println("The entered string is: "+str);
int[] freq = new int[str.length()];
char minChar = str.charAt(0), maxChar = str.charAt(0);
int i, j, min, max;
//Converts given string into character array
char string[] = str.toCharArray();
//Count each word in given string and store in array freq
for(i = 0; i < string.length; i++)
{
freq[i] = 1;
for(j = i+1; j < string.length; j++)
{
if(string[i] == string[j] && string[i] != ' ' && string[i] != '0')
{
freq[i]++;
//Set string[j] to 0 to avoid printing visited character
string[j] = '0';
}
}
}
//Determine minimum and maximum occurring characters
min = max = freq[0];
for(i = 0; i <freq.length; i++)
{
if(min > freq[i] && freq[i] != '0')
{
min = freq[i];
minChar = string[i];
}
if(max < freq[i])
{
max = freq[i];
maxChar = string[i];
}
}
//Print the minimum and maximum occurring characters
System.out.println("Minimum occurring character: " + minChar);
System.out.println("Maximum occurring character: " + maxChar);
}
}
输入的字符串为:最小和最大字符示例 最小出现字符:E 最大出现字符:m