首页 > 趋势科技5,7笔试
头像
面一个挂一个
编辑于 2020-05-07 20:32
+ 关注

趋势科技5,7笔试

第一题:约瑟夫环变种,K个人,每次淘汰从d开始d =(1,2,3,4,5...k)。想了下最优解无果,直接一把梭哈,下面是代码
package qushi;

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class p1 {
    public static int findIndex(List<Integer> result,int v){
        int index = 0;
        for(Integer tmp : result){
            if(tmp == v){
                return index;
            }else{
                index++;
            }
        }
        return -1;
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int k = in.nextInt();
        int start = 0;
        int dk = 1;
        int len = k;
        List<Integer> list = new LinkedList<>();
        for(int i = 1 ;i <= k; i++){
            list.add(i);
        }
        for(int i = 1 ;i <= k-1 ;i++){
            int dz = (start+dk)%len;
//            System.out.println("dz为"+dz);
//            System.out.println("删除元素为"+list.get(dz));
//            findIndex(list,list.get(dz+1));
            int value = list.get((dz+1)%len);
            list.remove(dz);
            dk++;
            len--;
            start = findIndex(list,value);
        }
//        System.out.println("list长度"+list.size());
        System.out.println(list.get(0));

    }
}

第二题,求字符串中最长的回文串,这题一把梭,先扩散法求出所有回文串,求最大长度,然后输出等于最大长度的回文串,附代码
package qushi;

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class p2 {
    static List<String> result = new LinkedList<>();
    public static void solu(int index, int right,char res []){
        int i = index-1;
        int j = right+1;
        String s = "";
        if(right ==  index){
            s+=res[index];
        }else{
            if(res[index] == res[right]){
                s+=res[index];
                s+=res[index];
            }
        }
        while ( i >= 0 && j < res.length&&res[i] == res[j] ){
            s = res[i]+s;
            s = s +res[j];
            i--;
            j++;
        }
        if(s.length() > 1)result.add(s);
    }
    public static void Solutionh(char res []){
        for(int i = 0;i < res.length-1; i++){
            solu(i,i,res);
            solu(i,i+1,res);
        }
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String h = in.nextLine();
        Solutionh(h.toCharArray());
        int maxlen = -1;
        if(result.isEmpty()){
            System.out.println("null");
            return;
        }
        for(String tmp : result){
           if(tmp.length() > maxlen){
               maxlen = tmp.length();
           }
        }
        for(String tmp:result){
            if(tmp.length() == maxlen){
                System.out.println(tmp);
            }
        }

    }
}



求大佬们的更优解。

全部评论

(14) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐