JAVA顺序表相关习题1

发布于:2024-05-01 ⋅ 阅读:(24) ⋅ 点赞:(0)

1.笔试题:cvte

str1 :welcome to cvte
str2:come
描述:删除第一个字符串当中出现的所有的第二个字符串的字符!结果:wlt vt
要求 用ArrayList完成!

public class Test {
    public static List<Character> findSameWords(String u1, String u2){
        List<Character> list=new ArrayList<>();
        for(int i=0;i<u1.length();i++){
            char ch=u1.charAt(i);
            if(!u2.contains(ch+"")){
                list.add(ch);
            }
        }
        return list;
    }

    public static void main(String[] args) {

        String u1="welcome to shanghai";
        String u2="welcome";

        System.out.println(findSameWords(u1,u2));

    }

}

2.笔试题:杨辉三角

. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/pascals-triangle/description/

第一行是1

从第二行开始,第一个和最后一个都是1

中间列额外处理

    public static List<List<Integer>> getTriangle(Integer row){
        List<List<Integer>> list=new ArrayList<>();
        //先处理第一行
        List<Integer> list1=new ArrayList<>();
        list1.add(1);
        list.add(list1);
        //处理剩余的行数
        //从第二行开始
        for(int i=1;i<row;i++){
            //我们获取当前列首先要得到上一列
            List<Integer> list3=list.get(i-1);
            //用当前列展示
            List<Integer> list2=new ArrayList<>();
            //第一个数字为1
            list2.add(1);
            //处理中间的部分
            for(int j=1;j<i;j++){
                list2.add(list3.get(j-1)+list3.get(j));
            }
            //最后一个数字为1
            list2.add(1);
            //最后把这一整行插入杨辉三角
            list.add(list2);
        }
        return list;
    }

 

3.实现简单的洗牌算法

public class Card {
    public int rank; // 牌面值
    public String suit; // 花色

    public Card(int rank, String suit) {
        this.rank = rank;
        this.suit = suit;
    }

    @Override
    public String toString() {
        return  suit+rank;
    }
}

//买了一副牌

public class CardList {
    //花色
    public static final String[] SUITS = {"♠", "♥", "♣", "♦"};
    //买一幅牌
    private static List<Card> buyDeck() {
        List<Card> oneCard=new ArrayList<>(52);
        for(int i=0;i<SUITS.length;i++){
            for(int j=1;j<=13;j++){
                Card card=new Card(j,SUITS[i]);
                oneCard.add(card);
            }
        }
        return oneCard;
    }
    /*//洗牌
    private static List<Card> shuffle(List<Card> cards){
        Random random=new Random();
        //从后往前开始随机
        for(int i=cards.size()-1;i>0;i--){
            int index=random.nextInt(i);
            swap(cards,i,index);
        }
        return cards;
    }*/
    //洗牌
    private static void shuffle(List<Card> cards){
        Random random=new Random();
        //从后往前开始随机
        for(int i=cards.size()-1;i>0;i--){
            int index=random.nextInt(i);
            swap(cards,i,index);
        }
    }

    public static void main(String[] args) {
        List<Card> buyCard=buyDeck();
        System.out.println("买了一副牌"+buyCard);
        shuffle(buyCard);
        System.out.println("开始洗牌"+buyCard);

    }

    public static void swap(List<Card> cards,Integer i,Integer index){
        //中间变量
        Card tmp=cards.get(index);
        //开始进行交换
        cards.set(index,cards.get(i));
        cards.set(i,tmp);
    }
}

//发牌操作

//发牌操作
        List<List<Card>> card=new ArrayList<>();
        List<Card> user1=new ArrayList<>();
        List<Card> user2=new ArrayList<>();
        List<Card> user3=new ArrayList<>();
        card.add(user1);
        card.add(user2);
        card.add(user3);
        for(int j=0;j<5;j++){//每个人连续拿五张牌
            for(int i=0;i<3;i++){
                Card card1=buyCard.remove(0);
                card.get(i).add(card1);
            }
        }
        System.out.println("A获得的牌"+card.get(0));
        System.out.println("B获得的牌"+card.get(1));
        System.out.println("C获得的牌"+card.get(2));


网站公告

今日签到

点亮在社区的每一天
去签到