Day4 某菜狗子的練習,查找字符串中重複的元素並輸出

有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;
			
		}
	
}





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章