博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

笔试01

Posted on 2019-09-17 19:46  心默默言  阅读(137)  评论(0编辑  收藏  举报

1.判断一个字符串中的最长回文串

package exam;

import java.util.Scanner;


public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);

        String str = sc.nextLine();

        System.out.println(getResultString(str));
    }

    private static String getResultString(String s) {
        int len = s.length();
        if (len == 0) {
            return "";
        }
        //用来记录最长回文串的长度
        int length=0;
        //用来记录最长回文串下标
        int left=0,right=0;
        //这里的二维数组下标别记错了,j是算横坐标,i算纵坐标,使用的是上三角矩阵
        boolean[][] dp =new boolean[s.length()][s.length()];

        for ( int i=0;i<s.length();i++){
            for (int j=0;j<=i;j++){
                if (i==j){
                    dp[j][i]=true;
                }else if (j+1==i){
                    dp[j][i]=(s.charAt(i)==s.charAt(j));
                }else if (i-j>=2){
                    dp[j][i]=(s.charAt(i) == s.charAt(j)&&dp[j+1][i-1]);
                }
                if (dp[j][i]&&length<i-j+1){
                    length =i-j+1;
                    left = j;
                    right = i;
                }
            }
        }
        //beginIndex -- 起始索引(包括), 索引从 0 开始,endIndex -- 结束索引(不包括)
        return s.substring(left,right+1);
    }

    
}

 

2.求一个序列中缺失哪个数字

package kaoshi;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        List<Integer> list = new ArrayList<Integer>();
        while (sc.hasNext()) {
            list.add(sc.nextInt());
        }
        System.out.println(lack(list));

        //
    }

    private static Integer lack(List<Integer> source) {
        int temp = 0;
        for (int i = 0; i < source.size(); i++) {
            temp = temp ^ (i + 1) ^ source.get(i);
        }
        return temp;

    }

}

3.统计一个字符串中字符出现的次数

package exam;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class CountCharacter {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        Map<Character, Integer> map = new HashMap<Character, Integer>();
        char[] list = s.toCharArray();

        for (char ch : list) {
            if(map.containsKey(ch)) {
                int num = map.get(ch);
                num = num + 1;
                map.put(ch, num);
            }else {
                map.put(ch, 1);
            }
        }
        System.out.println(map);
    }

}

4.统计字符串中出现次数最多的k个字符

package exam;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;

public class CountCharacter {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        Map<Character, Integer> map = new HashMap<Character, Integer>();
        char[] list = s.toCharArray();
        int max = 0;
        for (char ch : list) {
            if (map.containsKey(ch)) {
                int num = map.get(ch);
                num = num + 1;
                map.put(ch, num);
            } else {
                map.put(ch, 1);
            }
        }

        List<Map.Entry<Character, Integer>> list2 = new ArrayList<Map.Entry<Character, Integer>>(map.entrySet());
        Collections.sort(list2, new Comparator<Map.Entry<Character, Integer>>() {

            @Override
            public int compare(Entry<Character, Integer> o1, Entry<Character, Integer> o2) {
                // TODO Auto-generated method stub
                return o2.getValue().compareTo(o1.getValue());
            }
        });

        for (Map.Entry<Character, Integer> m : list2) {
            System.out.println(m.getKey() + "...." + m.getValue());
        }
    }

}

5.连续字符串压缩

package exam;

import java.util.*;

public class CountCharacter {

    public static void getNumFromString(String string) {
        StringBuilder sb = new StringBuilder();
        char c = string.charAt(0);
        int count = 1;
        for (int i = 1; i < string.length(); i++) {
            char s = string.charAt(i);
            if (s == c) {
                count++;
            } else {
                if (count > 1) {
                    sb.append(count);
                    sb.append(c);
                    count = 1;
                } else {
                    sb.append(c);
                }
            }
            c = s;
        }

        if (count > 1) {
            sb.append(count);
        }
        sb.append(c);
        System.out.println(sb.toString());

    }

    public static void main(String[] args) {
        getNumFromString("aabbcaaad");
    }
}