對字符串操作的各種筆試題


  下面列出一些在筆試中常出現的對字符串操作的題目,都是本人自己寫的,如果哪里不對或者有更好的實現歡迎大家指出!如果有其他題目也歡迎大家貼出來!謝謝!

一、實現字符串的反轉,如輸入"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 }

 


有待補充......


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM