随笔 - 363, 文章 - 0, 评论 - 2, 阅读 - 23万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

笔试01

Posted on   心默默言  阅读(139)  评论(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");
    }
}
复制代码

 

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示