String的常见操作(面试题)

String的常见操作(面试题)

将字符串逆序输出

    public static String inverse(String str ){

        char chars[] = str.toCharArray();
        for(int i=0;i<chars.length/2;i++){
            char temp = chars[i];
            chars[i] = chars[chars.length-i-1];
            chars[chars.length-i-1] = temp ;
        }

        return String.valueOf(chars) ;
    }

返回出现频率最高的字符

    public static char findHighRateChar(String str){
        int  max_num_char = 0;
        char highRateChar = ' ';
        Map<String,Integer> map = new HashMap<String,Integer>();
        char chars[] = str.toCharArray();
        for(int i=0;i<chars.length;i++){
            String char_i = String.valueOf(chars[i]);
            if(map.containsKey(char_i)){
                map.put(char_i,map.get(char_i)+1);
                if(map.get(char_i) > max_num_char ){
                    max_num_char = map.get(char_i);
                    highRateChar = chars[i];
                }
            }else{
                map.put(String.valueOf(chars[i]),1);
            }
        }
        return highRateChar;
    }

找出字符串中最长的那个对称字符串

/*找最长对称字符串,应该重最大长度开始找,找到就返回
    如果从最小开始找的话,效率好低,那找到一个还要继续找,直到找到最长的为止
    如果找对称的个数的话那就另当别论了,必须得所有都判断
*/
    public static String findMaxSymmetryStr(String str){
        String symmetryStr;
        for (int i = str.length(); i >=2; i--) { //找是否有长度为i的对称串,i从最大开始
            for (int j = 0; j<i-1 ; j++) {
                symmetryStr = str.substring(j, i);
                char[] chars = symmetryStr.toCharArray();
                int k;
                //判断是否为对称串
                for (k = 0; k < chars.length/2; k++) {
                    if(chars[k] != chars[chars.length-k-1]){
                        break;
                    }
                }
                //如果对称则返回
                if(k == chars.length/2){
                    return symmetryStr;
                }
            }
        }
        return "";
    }

找字符串中共有多少个对称的字符串

    public static int findSymmetryStrNum(String str){
     String symmetryStr;
     int count = 0;//用于计数
     for(int i=str.length();i>=2;i--){//至少要二个字符才能判断是否对称
         for(int j=0;j<i-1;j++){
             char temp[] = str.substring(j,i).toCharArray();
             int k;
             for(k=0;k<temp.length/2;k++){
                 if(temp[k] != temp[temp.length-k-1]){
                     break;
                 }
             }
             if(k == temp.length/2){
                 count++;
             }
         }
     }
     return count;
    }
posted @ 2017-10-22 17:09  PrivateO2  阅读(320)  评论(0编辑  收藏  举报