下面列出一些在筆試中常出現的對字符串操作的題目,都是本人自己寫的,如果哪里不對或者有更好的實現歡迎大家指出!如果有其他題目也歡迎大家貼出來!謝謝!
一、實現字符串的反轉,如輸入"abc",返回"cba"
1 package com.others; 2 3 public class 字符串反轉 { 4 5 public static void main(String[] args) { 6 System.out.println(inverse("liuling")); 7 } 8 9 public static String inverse(String str){ 10 char[] chars = str.toCharArray(); //得到字符數組 11 for (int i = 0; i < chars.length/2; i++) { 12 char temp = chars[i]; 13 chars[i] = chars[chars.length-i-1]; 14 chars[chars.length-i-1] = temp; 15 } 16 17 return String.copyValueOf(chars); 18 } 19 20 }
二、找字符串中最長對稱串
1 package com.others; 2 3 4 public class 找字符串中最長對稱串 { 5 6 public static void main(String[] args) { 7 System.out.println(findSymmetry("dgaabcddcbadfabcdefghijkkjihgfedcbagaaabbccddddccbbaaaf")); 8 } 9 /** 10 * 找最長對稱字符串,應該重最大長度開始找,找到就返回 11 * 如果從最小開始找的話,效率好低,那找到一個還要繼續找,直到找到最長的為止 12 * 如果找對稱的個數的話那就另當別論了,必須得所有都判斷 13 */ 14 public static String findSymmetry(String str){ 15 String symmetryStr; 16 for (int i = str.length()-1; i > 0; i--) { //找是否有長度為i的對稱串,i從最大開始 17 for (int j = 0; j<str.length() && j+i<str.length(); j++) { 18 symmetryStr = str.substring(j, j+i+1); 19 char[] chars = symmetryStr.toCharArray(); 20 int k; 21 //判斷是否為對稱串 22 for (k = 0; k < chars.length/2; k++) { 23 if(chars[k] != chars[chars.length-k-1]){ 24 break; 25 } 26 } 27 //如果對稱則返回 28 if(k == chars.length/2){ 29 return symmetryStr; 30 } 31 } 32 } 33 return ""; 34 } 35 }
三、求字符串中對稱串的個數
1 package com.others; 2 3 public class 求字符串中對稱串的個數 { 4 5 6 public static void main(String[] args) { 7 System.out.println(findSymmetryCount("aabbaaffddphpaffa")); 8 } 9 public static int findSymmetryCount(String str){ 10 int count = 0; 11 String symmetryStr; 12 for (int i = 1; i < str.length(); i++) { 13 for (int j = 0; j<str.length() && j+i<str.length(); j++) { 14 symmetryStr = str.substring(j, j+i+1); 15 char[] chars = symmetryStr.toCharArray(); 16 int k; 17 //判斷是否為對稱串 18 for (k = 0; k < chars.length/2; k++) { 19 if(chars[k] != chars[chars.length-k-1]){ 20 break; 21 } 22 } 23 //如果對稱則count+1 24 if(k == chars.length/2){ 25 count++; 26 } 27 } 28 } 29 return count; 30 } 31 }
四、求字符串中出現頻率最高的字符
1 package com.others; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 public class 求字符串中出現頻率最高的字符 { 7 8 public static void main(String[] args) { 9 System.out.println(findHighRateChar("abcdfeeafdaf")); 10 } 11 public static char findHighRateChar(String str){ 12 int max = 0; 13 char c = ' '; 14 Map<Character, Integer> map = new HashMap<Character, Integer>(); 15 char[] chars = str.toCharArray(); 16 for (int i = 0; i < chars.length; i++) { 17 if(map.containsKey(chars[i])){ 18 map.put(chars[i], map.get(chars[i])+1); 19 if(map.get(chars[i])>max){ 20 max = map.get(chars[i]); 21 c = chars[i]; 22 } 23 }else{ 24 map.put(chars[i], 1); 25 } 26 } 27 return c; 28 } 29 }
有待補充......