有abasdcalsjdfasf34asfjsfasf一段字符串,找出其中重複最多的字符,和重複最少的字符和重複的次數!
用了兩個for的嵌套循環和幾個for循環來達到目的,時間複雜度應該是O(n^2);如果有不足之處還請各位dalao指教,或者有更好的方法也可以參考參考,但是學的不算多,估計會看不懂,還請見諒!
希望和各位dalao共同進步!
package com.homework_02
import java.util.Arrays;
//2.有abasdcalsjdfasf34asfjsfasf一段字符串,找出其中重複最多的字符,和重複最少的字符和重複的次數!
public class StringDemo3 {
public static void main(String[] args) {
String s = "abasdcalsjdfasf34asfjsfasf";
//將字符串轉化爲字符數組
char[] chs = s.toCharArray();
int a;
int k = 0;
int[] chs2 = new int[chs.length];
char[] chs3 = Arrays.copyOf(chs, chs.length);
for (int i = 0; i < chs.length; i++) {
a = chs[i];
for (int j = 0; j < chs.length; j++) {
if (a == chs[j]&&a!=' ') {
k++;
chs[j] = ' ';
}
}
chs2[i] = k;
k = 0;
}
int max = getMax(chs2);
int min = getMin(chs2);
//在數組中找到對應值的索引
for (int i = 0; i < chs2.length; i++) {
if (max == chs2[i]) {
System.out.println("重複最多的是"+chs3[i]+"重複了"+max+"次");
}
}
for (int i = 0; i < chs2.length; i++) {
if (min == chs2[i]) {
System.out.println("重複最少的是:"+chs3[i]+" "+"重複了:"+min+"次");
}
}
}
//獲取數組中最大值的方法
public static int getMax(int[] arr){
int max = arr[0];
for(int i=0;i<arr.length;i++) {
if(max<=arr[i]) {
max = arr[i];
}
}
return max;
}
//獲取數組中最小且非零值的方法
public static int getMin(int[] arr){
int min = arr[0];
for(int i=0;i<arr.length;i++) {
if(min>=arr[i]&&arr[i]*min!=0) {
min = arr[i];
}
}
return min;
}
}