Java-program til at finde frekvensen af tegn i streng
I denne øvelse lærer vi, hvordan man tæller hyppigheden af tegn i en streng. Det betyder, at vi tæller, hvilket tegn der er til stede, hvor mange gange i strengen.
Dette kan gøres ved først at gentage strengen og derefter beregne antallet af gange, tegnene er opstået. Men før du går videre, hvis du ikke er bekendt med begrebet streng, så tjek artiklen om Strings i Java.
Input: Indtast strengen:Study Tonight
Output: Tegnene og deres tilsvarende frekvenser:
Tegn =Frekvenser
S =1
t =2
u =1
d =1
y =1
T =1
o =1
n =1
i =1
g =1
h =1
Program 1:Tæl hyppigheden af tegn i en streng
I dette program vil vi se, hvordan man tæller frekvensen af et tegn i en streng, når strengen er foruddefineret i programmet.
Algorithme
-
Start
-
Erklære en streng
-
Initialiser det.
-
Brug et frekvensarray til at gemme frekvensen af hvert tegn.
-
Konverter strengen til et tegnarray
-
Brug to til sløjfer til at beregne frekvensen af hvert element.
-
Brug den første for-løkke til at iterere gennem hvert tegn i arrayet.
-
Initialiser hvert element i frekvensarrayet som 1.
-
Brug en anden for-løkke til at gentage de resterende tegn.
-
Tjek for den samlede forekomst af elementet.
-
Hvis elementet opstår igen, skal du øge værdien i frekvensarrayet.
-
Indstil tegnarrayet til 0 for at undgå at tælle besøgte tegn.
-
Udskriv tegnene og deres tilsvarende frekvens.
-
Stop.
Nedenfor er Java-koden til at tælle hyppigheden af tegn i Java String.
/*Java Program to find the frequency of characters in a string*/
public class Main
{
public static void main(String[] args)
{
String str = "Study Tonight";
int[] freq = new int[str.length()];
System.out.println("The entered string is "+str);
//Convert the given string into character array
char str1[] = str.toCharArray();
for(int i = 0; i <str.length(); i++)
{
freq[i] = 1;
for(int j = i+1; j <str.length(); j++)
{
if(str1[i] == str1[j])
{
freq[i]++;
//Set str1[j] to 0 to avoid printing visited character
str1[j] = '0';
}
}
}
//Displays the characters and their corresponding frequency
System.out.println("Frequencies of the characters in the string are as below: ");
System.out.println("Characters frequencies");
for(int i = 0; i <freq.length; i++)
{
if(str1[i] != ' ' && str1[i] != '0')
System.out.println(str1[i] + " " + freq[i]);
}
}
}
Den indtastede streng er Study Tonight
Frekvenserne af tegnene i strengen er som nedenfor:
Tegnfrekvenser
S 1
t 2
u 1
d 1
å 1
T 1
o 1
n 1
i 1
g 1
t 1
Program 2:Tæl hyppigheden af tegn i en streng
I dette program vil vi se, hvordan man tæller frekvensen af et tegn i en streng, når strengen er brugerdefineret. Her vil vi i dette program bede brugeren om at indtaste en streng, og derefter beregner vi hyppigheden af tegnene i strengen.
Algorithme
-
Start
-
Erklære en streng
-
Bed brugeren om at initialisere den.
-
Brug et frekvensarray til at gemme frekvensen af hvert tegn.
-
Konverter strengen til et tegnarray
-
Brug to til sløjfer til at beregne frekvensen af hvert element.
-
Brug den første for-løkke til at iterere gennem hvert tegn i arrayet.
-
Initialiser hvert element i frekvensarrayet som 1.
-
Brug en anden for-løkke til at gentage de resterende tegn.
-
Tjek for den samlede forekomst af elementet.
-
Hvis elementet opstår igen, skal du øge værdien i frekvensarrayet.
-
Indstil tegnarrayet til 0 for at undgå at tælle besøgte tegn.
-
Udskriv tegnene og deres tilsvarende frekvens.
-
Stop.
Nedenfor er Java-koden til at tælle hyppigheden af tegn i Java String.
/*Java Program to find the frequency of characters in a string*/
import java.util.Scanner;
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 is: ");
String str = sc.nextLine();
int[] freq = new int[str.length()]; //Frequency array to store the frequency of each character
//Convert the given string into character array
char str1[] = str.toCharArray();
for(int i = 0; i <str.length(); i++)
{
freq[i] = 1;
for(int j = i+1; j <str.length(); j++)
{
if(str1[i] == str1[j])
{
freq[i]++;
//Set str1[j] to 0 to avoid printing visited character
str1[j] = '0';
}
}
}
//Displays the characters and their corresponding frequency
System.out.println("Frequencies of the characters in the string are as below: ");
System.out.println("Characters frequencies");
for(int i = 0; i <freq.length; i++)
{
if(str1[i] != ' ' && str1[i] != '0')
System.out.println(str1[i] + " " + freq[i]);
}
}
}
Indtast strengen er:Tegn Frekvensantal
Frekvenserne for tegnene i strengen er som nedenfor:
Tegnfrekvenser
C 2
h 1
a 2
r 3
c 2
t 2
e 3
s 1
F 1
q 1
u 2
n 2
å 1
o 1