12
返回列表 发新帖
楼主: xqboston
跳转到指定楼层
上一主题 下一主题
收起左侧

脸家 店面 两轮 一道medium 一道hard

🔗
jhzhou 2018-11-11 21:19:23 | 只看该作者
全局:
po个代码,一个检查顺序,一个自定义顺序排序string array


  1. import java.util.*;


  2. public class Solution {
  3.     public static void main(String[] args) {

  4.         System.out.println("?");
  5.         Solution s = new Solution();
  6.         s.unitTest_validOrder();
  7.         return;
  8.     }


  9.     private void unitTest_validOrder() {
  10.         String order = "abcde";

  11.         String[][] tests = {
  12.                 {"abcde", "bcd", "cde", "bbb", "bab"},
  13.                 {"a", "b", "cde", "dcs", "e"}
  14.         };

  15.         for (String[] s : tests) {
  16.             String res = String.valueOf(validOrder(s, order));
  17.             System.out.println(res);
  18.         }

  19.         String[] test1 = {"abcde", "bcd", "cde", "bbb", "bab"};
  20.         String[] res = sortStringArray(test1, order);
  21.         for (String s : res) {
  22.             System.out.println(s);
  23.         }
  24.     }


  25.     public boolean validOrder(String[] words, String order) {
  26.         HashMap<Character, Integer> map = new HashMap<>();
  27.         for (int i = 0; i < order.length(); i++) {
  28.             map.put(order.charAt(i), i);
  29.         }

  30.         for (int i = 1; i < words.length; i++) {
  31.             String pre = words[i-1];
  32.             String cur = words[i];

  33.             int l = Math.min(pre.length(), cur.length());

  34.             for (int j = 0; j < l; j++) {
  35.                 char cpre = pre.charAt(j);
  36.                 char ccur = cur.charAt(j);
  37.                 if (cpre != ccur) {
  38.                     if (map.get(cpre) > map.get(ccur))
  39.                         return false;
  40.                     else {
  41.                         break;
  42.                     }
  43.                 }

  44.             }
  45.         }

  46.         return true;
  47.     }

  48.     public String[] sortStringArray(String[] words, String order) {
  49.         HashMap<Character, Integer> map = new HashMap<>();
  50.         for (int i = 0; i < order.length(); i++) {
  51.             map.put(order.charAt(i), i);
  52.         }

  53.         List<String> list = bucketSort(Arrays.asList(words), map, order, 0);
  54.         String[] res = new String[list.size()];
  55.         for (int i = 0; i < list.size(); i++) {
  56.             res[i] = list.get(i);
  57.         }

  58.         return res;
  59.     }

  60.     public List<String> bucketSort(List<String> list, HashMap<Character, Integer> orderMap, String order, int index) {
  61.         HashMap<Character, List<String>> bucket = new HashMap<>();
  62.         for (char c : orderMap.keySet()) {
  63.             bucket.put(c, new ArrayList<>());
  64.         }

  65.         for (String s : list) {
  66.             bucket.get(s.charAt(index)).add(s);
  67.         }

  68.         List<String> res = new ArrayList<>();

  69.         for (char c : order.toCharArray()) {
  70.             if (bucket.get(c).size() == 1) {
  71.                 res.add(bucket.get(c).get(0));
  72.             } else if (bucket.get(c).size() > 1) {
  73.                 res.addAll(bucketSort(bucket.get(c), orderMap, order, index + 1));
  74.             }
  75.         }
  76.         return res;
  77.     }


  78. }


复制代码

补充内容 (2018-11-11 21:20):
alien dict 变种
回复

使用道具 举报

全局:
感谢楼主分享!!沾沾喜气!
回复

使用道具 举报

🔗
sunnyleox 2018-11-12 13:24:39 | 只看该作者
全局:
谢谢楼主分享!
回复

使用道具 举报

🔗
balla2011 2018-11-17 08:21:09 | 只看该作者
全局:
lz意思是两轮都是分别只做了1道题目?
回复

使用道具 举报

🔗
msulove18 2018-11-22 00:23:04 | 只看该作者
全局:
balla2011 发表于 2018-11-17 08:21
lz意思是两轮都是分别只做了1道题目?

是这个意思吧 背靠背两轮
回复

使用道具 举报

无效楼层,该帖已经被删除
🔗
jajaa 2018-11-22 05:02:19 来自APP | 只看该作者
全局:
看不了 先mark了
回复

使用道具 举报

🔗
Like999 2019-2-23 11:19:17 | 只看该作者
全局:
同看不了的路过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表