Câu hỏi phỏng vấn kỹ thuật phổ biến trong java là đếm sự xuất hiện của một từ cụ thể trong chuỗi nhưng nếu người phỏng vấn yêu cầu đếm tổng số lần mỗi bảng chữ cái xuất hiện trong chuỗi. Đó là câu hỏi, logic mà bạn cần phải suy nghĩ tại thời điểm đó và thật đáng buồn là không có phương thức java cơ bản tích hợp nào để cung cấp cho bạn câu trả lời trực tiếp bằng cách chuyển chuỗi đầu vào.
Vì vậy, để chuẩn bị cho loại câu hỏi như vậy, tôi đã chia sẻ mã chương trình dưới đây.
Chuỗi đầu vào: "Alive is awesome"
Kết quả: A = 1, l = 1, i = 2, v = 1, e = 3, = 2, s = 2, a = 1, w = 1, o = 1, m = 1
Để hiểu được vấn đề này hãy tìm hiểu về mảng trong java
* Chúng tôi bắt đầu duyệt qua chuỗi trong mảng z [i].
cho i = 0 đến i <z.length
Lưu trữ ký tự tại chỉ mục i là z [i] trong biến tạm thời ch
cho z [i + 1] đến z.length
if ch bằng với bất kỳ phần tử nào của phần còn lại của các ký tự mảng
sau đó di chuyển con trỏ đến chỉ mục tiếp theo và giảm độ dài của chuỗi xuống 1
set s [k] = s [k + 1] // xóa bảng chữ cái đã có trong mảng z
đặt j = i
* Tạo một mảng số nguyên mới để lưu trữ tổng số lần xuất hiện của bảng chữ cái trong chuỗi (bên dưới t)
* So sánh mọi phần tử của chuỗi s với mọi phần tử của mảng ký tự z
nếu cả hai đều bằng nhau
tăng số lượng lên 1
Thêm giá trị đếm cuối cùng vào mảng t (được sử dụng để lưu trữ số đếm cuối cùng của tổng số lần xuất hiện của bảng chữ cái trong chuỗi)
* In số lượng của bảng chữ cái
Sau đây là chương trình:
Vì vậy, để chuẩn bị cho loại câu hỏi như vậy, tôi đã chia sẻ mã chương trình dưới đây.
Chuỗi đầu vào: "Alive is awesome"
Kết quả: A = 1, l = 1, i = 2, v = 1, e = 3, = 2, s = 2, a = 1, w = 1, o = 1, m = 1
1. Chương trình/Thuật toán cho số lần xuất hiện của ký tự trong chuỗi trong Java
Tôi sẽ sử dụng HashMap để đếm số lần xuất hiện của Ký tự trong Chuỗi trong java. Nó sẽ có Ký tự là khóa và số lần xuất hiện của nó là giá trị. Đầu tiên chúng ta sẽ chuyển đổi chuỗi đã cho thành mảng char. Sau đó, chúng ta sẽ duyệt qua mảng char và tăng giá trị của nó lên 1 cho mỗi Ký tự có trong chuỗi đầu vào.Để hiểu được vấn đề này hãy tìm hiểu về mảng trong java
public class EachCharacterCountInStringKết quả:
{
public static void main(String[] args)
{
characterCount("Alive is Awesome");
characterCount("Java Hungry");
characterCount("USA has 50 states");
}
static void characterCount(String inputString)
{
//Creating a HashMap, key :Character value : occurrences as Integer
HashMap<Character, Integer> eachCharCountMap = new HashMap<Character, Integer>();
//Converting inputString to char array
char[] charArray = inputString.toCharArray();
//traversal of each Character of charArray
for (char c : charArray)
{
if(eachCharCountMap.containsKey(c))
{
//If char is present in eachCharCountMap, increment count by 1
eachCharCountMap.put(c, eachCharCountMap.get(c)+1);
}
else
{
//If char is not present in eachCharCountMap,
//Putting this char to eachCharCountMap with 1 as it's initial value
eachCharCountMap.put(c, 1);
}
}
//Showing the eachCharCountMap
System.out.println(eachCharCountMap);
}
}
{ =2, A=1, a=1, s=2, e=3, v=1, w=1, i=2, l=1, m=1, o=1}
{ =1, a=2, r=1, u=1, v=1, g=1, H=1, y=1, J=1, n=1}
{ =3, 0=1, A=1, a=2, S=1, s=3, t=2, U=1, 5=1, e=1, h=1}
2. Chương trình/Thuật toán cho số lần xuất hiện của Ký tự trong Chuỗi trong Java (Không sử dụng HashMap)
* Chúng tôi lưu trữ chuỗi đầu vào trong một mảng ký tự (bên dưới z). (Chúng tôi muốn tạo một mảng ký tự z mà không có bất kỳ bảng chữ cái trùng lặp nào)* Chúng tôi bắt đầu duyệt qua chuỗi trong mảng z [i].
cho i = 0 đến i <z.length
Lưu trữ ký tự tại chỉ mục i là z [i] trong biến tạm thời ch
cho z [i + 1] đến z.length
if ch bằng với bất kỳ phần tử nào của phần còn lại của các ký tự mảng
sau đó di chuyển con trỏ đến chỉ mục tiếp theo và giảm độ dài của chuỗi xuống 1
set s [k] = s [k + 1] // xóa bảng chữ cái đã có trong mảng z
đặt j = i
* Tạo một mảng số nguyên mới để lưu trữ tổng số lần xuất hiện của bảng chữ cái trong chuỗi (bên dưới t)
* So sánh mọi phần tử của chuỗi s với mọi phần tử của mảng ký tự z
nếu cả hai đều bằng nhau
tăng số lượng lên 1
Thêm giá trị đếm cuối cùng vào mảng t (được sử dụng để lưu trữ số đếm cuối cùng của tổng số lần xuất hiện của bảng chữ cái trong chuỗi)
* In số lượng của bảng chữ cái
Sau đây là chương trình:
public class AlphabetFrequencyString {
static int i,j,k,c=0,w;
static char m; //we can only define static for variables and fns not for arrays
public static void main(String[] args) {
System.out.println("Input string is : ");
System.out.println("Alive is awesome");
System.out.println("");
System.out.println("");
System.out.println("Output :");
frequencycount("Alive is awesome");
}
static void frequencycount(String s)
{
char[] z=new char[s.length()];
for(w=0;w<s.length();w++)
z[w]=s.charAt(w);
for(i=0;i<w;i++)
{
char ch=z[i];
for(j=i+1;j<w;j++)
{
if(z[j]==ch)
{
for(k=j;k<(w-1);k++)
z[k]=z[k+1];
w--;
j=i;
}
}
}
int[] t=new int[w];
for(i=0;i<w;i++)
{
for(j=0,c=0;j<s.length();j++)
{
if(z[i]==s.charAt(j))
c++;
}
t[i]=c ;
System.out.print(z[i]+"="+c+",");
}
}
}
No comments:
Post a Comment