昨天收到通知,今天有个面试,一家魔都中型电商公司,名字咱就不说了。内心顿时踌躇满志、跃跃欲试,晚上还翻看面试题,做准备。到了目的地之后,先把笔试题做完,面试官徐徐而来,一下来了两个,我估摸着一个是产品总监,一个是技术人员,很显然技术人员才是面试的主要提问者。进来之后,6目相对凝视大概几秒钟,空气开始略显尴尬。产品领导就说你是XX吧,先简单介绍下自己,然后我就巴拉巴拉… 介绍完毕,此时产品总监仍在翻看我的简历,熟悉的六目相对变成了我和技术面试官的四目相对,技术人员率先打破尴尬,提出了玩个字符串游戏,接下来进入正题了。 技术面试官问道:“如何判断一个字符串包含另一个字符串?有几种方式?这样,换个问题吧,如何判断两个字符串中含有几个相同字符?有几种方式?” 我脑子一转,脱口而出,“可以将字符串转化为字符数组,然后去循环遍历,在遍历后面加个count用来记数,这样应该就可以了。” 心中窃喜,这反应还挺快的。 面试官:“嗯,不错,这是个实现方式,这是第一个,还有吗?” 略作思考状,想了一下,我答道:“可以使用hashMap去处理,我记得map有个方法叫getOrDefault(),它可以允许调用者在代码语句中规定获得在map中符合提供的键的值,否则在没有找到提供的键的匹配项的时候返回一个“默认值”。这样可以计算出相同元素的数量。” 还好我之前碰到类似的问题,不然还真不知道还有啥方法了。 面试官点头道:“这个方法倒是不常用,不过应该是可以实现的,还有别的方式去实现吗?” … “额…目前只能想到这两种方式了。” 依稀能感觉到面试官旁边的产品总监动了一下。 回到家里研究了一下,发现方式还挺多的,以下方式都是回家后发掘的。 这种方式和第一种很像,只不过是用到了charAt()这个方法。 这种方式就厉害了,之前完全没想到过,竟然还有这种用法,简介明了,一行搞定,不过这样用效率会比较低。 目前是介绍的这5种比较常用的方式。 好了,继续回到和面试官的对话。 面试官面无表情的道:“没了?应该是不止这两种方式的,不过没事,咱们接着聊下个问题。如何判断一个字符串中哪个元素是最多的,并求出个数?” 和字符串杠上了这是。 沉思了片刻,慢慢思路有了。 我便答道:“先将字符串转换为字符数组,然后转存到HashMap集合中,集合的key为字符串中出现的字符,value对应字符出现的次数。最后只需要在HashMap集合中找到Value值最大的key就可以了。” 面试官点头道:“这个想法不错,具体实现你能写出来吗?” 说着便拿过一张白纸,放在我面前。 卧槽无情,手写代码。虽然思路是有了,但纯手写对我来说确实太难了,恰好此时手不听使唤了(其实就是不想写了)。也许产品总监看到了我颤抖的双手,终于开始操作了。 产品总监直接问道:“对我们公司有啥想问的吗?” 此处莫名点题了。“刚才也看到了这两个问题回答的不是很好。” 心想,什么鬼,这么快就面完了?然而我微笑着说道:“贵公司做的电商业务是全渠道的吗?” 既然说了那还是得象征性的问下,寒暄了几句云云,聊天也就到此结束了。 回到家自己看了下发现有更好的实现方式,如下: 可能因为疫情很多公司不怎么招人了,但还是会让hr去筛选简历找人过来面试,我猜这家公司就是这种情况。基本上很多东西都没问,就像是走个过场一样。 疫情期间,换工作不易,但希望还是有的,就看准备的怎么样了。看到这里的都是大佬,各位晚安。 之前刚写完保存失败,连草稿箱都没了,害我又重新写了一遍。已是深夜了,同时也是520的凌晨了。目录
前言
如何判断两个字符串中含有几个相同字符
第一种方式,将字符串转化成数组
package com.roadway; /** * @author roadway */ public class TestString { public static int judgeTwoString(String a, String b) { char[] aChar = a.toCharArray(); char[] bChar = b.toCharArray(); int r = 0; for (int i = 0;i < aChar.length ; i ++){ for(int j = 0; j < bChar.length; j++){ if(aChar[i] == bChar[j]) { r++; } } } return r; } public static void main(String[] args) { System.out.println(judgeTwoString("abcdef", "bcd")); } }
第二种方式,HashMap方法
package com.roadway; import java.util.HashMap; import java.util.Map; /** * @author roadway */ public class TestString { public static int judgeTwoString(String a, String b) { Map<Character, Integer> map = new HashMap<>(); int count = 0; for(char c : a.toCharArray()) { map.put(c, map.getOrDefault(c, 0) + 1); } for(int i = 0; i < b.length(); i++) { count += map.getOrDefault(b.charAt(i), 0); } return count; } public static void main(String[] args) { System.out.println(judgeTwoString("abcdef", "bcd")); } }
第三种方式,字符串直接进行比较
package com.roadway; /** * @author roadway */ public class TestString { public static int judgeTwoString(String a, String b) { int count=0; for (int i=0;i<a.length();i++){ for (int j=0;j<b.length();j++){ if (b.charAt(j) == a.charAt(i)){ count+=1; } } } return count; } public static void main(String[] args) { System.out.println(judgeTwoString("abcdef", "bcd")); } }
第四种方式,正则表达式
package com.roadway; /** * @author roadway */ public class TestString { public static int judgeTwoString(String a, String b) { return a.replaceAll("[^" + b + "]", "").length(); } public static void main(String[] args) { System.out.println(judgeTwoString("abcdef", "bcd")); } }
第五种方式,HashSet方法
package com.roadway; import java.util.HashSet; import java.util.Set; /** * @author roadway */ public class TestString { public static int judgeTwoString(String a, String b) { Set<Character> set = new HashSet<>(); for (char c : a.toCharArray()) { set.add(c); } int res = 0; for (char c : b.toCharArray()) { if (set.contains(c)) { res++; } } return res; } public static void main(String[] args) { System.out.println(judgeTwoString("abcdef", "bcd")); } }
如何判断一个字符串中哪个元素最多,并求出个数
package com.roadway; /** * @author roadway */ public class TestString { public static void judgeString(String str) { int max_length = 0; String max_str = ""; while (str.length() > 0) { int length = str.length(); String first = str.substring(0, 1); str = str.replaceAll(first, ""); if (max_length < length - str.length()) { max_length = length - str.length(); max_str = first; } } System.out.println(max_length + max_str); } public static void main(String[] args) { judgeString("abbcccddddaa"); } }
后记
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算