某公司的笔试里有10单选、5多选、4编程、1压轴(其实就是解答题,我还以为是编程题…最后编程题都没做完想去写它结果…),这里我用印象写下编程题。先写自己当时的想法,明天去找找优化方法,有想法的小伙伴也可以在评论区发下或者私聊我。
给一个字符串,要求变为字符不重复的字符串,遇见重复的则以第一个出现的位置为准。如abcbdde->abcde。不允许使用集合类和contains等方法我用的最暴力的方法,用StringBuilder对象去存字符。每次去存字符前,都要把StringBuilder已经存的全检索一遍,如果已经存在就抛弃去看下个字符,如果不存在就存入StringBuilder,没想到这样都能过了全部的用例…
文件开头多种书的信息,分为4类信息 名字类别描述idint书号categoryint分类wordsint字数updatetimedate更新日期输入方式id,category,words,updatetime,每行一组 排序方式 category>updatetime>id>words 按这个顺序输出id
我的想法是写一个book类,实现comparable接口,compareTo方法里用嵌套的ifelse,来设定这个比较顺序,大的往前放,相同则比较下一个属性。把输入数据变成一个book数组,调用Arrays.sort方法来按照这个顺序,结果自己竟然卡在了不会把字符串转成Date对象上…惭愧啊!!!比较方法也没写完。
输出整数n转为二进制后1的个数,n>0这个我的想法也比较简单,就是每次%2。为1则count++,为0则不管,然后n=n/2,直到n=0为止。没想到这样就过了全部用例,本来还以为可能会有数据过大,要用大数或者字符串来处理,没想到过了…
给一个二维矩阵,然后把矩阵顺时针旋转90度,然后把矩阵元素一行一行输入,输入为一行字符串,元素中间用,隔开。要求额外空间复杂度为O(1)因为额外空间复杂度为O(1),那用二维数组存储矩阵之后就不能再用其他的数组存了。其实顺时针旋转90度再输出,就是把二维数组按第0列开始,第n-1行开始,从下往上,从左往右输出。这样就不需要二维数组先存储再输出了(其实先存储也是按照这个顺序存到二维数组然后正常输出而已)。
最后压轴题问了一个AIO、BIO、NIO,原谅我还没复习到…在答题区说了还不会十分抱歉…就交了… 解答题就解答题呗,为啥叫啥压轴题,我还以为也是编程题,编程题还没写完就交了…