楼主: octluck
跳转到指定楼层
上一主题 下一主题
收起左侧

领英onsite新题

全局:
octluck 发表于 2018-1-11 13:20
原来用work break II 的思路,结果没有写出来

恩,好思路。感觉确实是一类问题。谢谢楼主。
回复

使用道具 举报

🔗
 楼主| octluck 2018-1-11 13:42:55 | 只看该作者
全局:
楼上洗衣机成精 发表于 2018-1-11 13:30
恩,好思路。感觉确实是一类问题。谢谢楼主。

如果你写出来能贴一个吗?或者站内也行,多谢啦
回复

使用道具 举报

🔗
say543 2018-1-11 15:08:30 | 只看该作者
全局:
octluck 发表于 2018-1-11 13:07
这个我没问,应该没什么要求吧,但是不能替换的字母顺序不能变

需要考虑回朔吗ex : abb => acc => add if {b => c, cc=> dd} ?
回复

使用道具 举报

🔗
 楼主| octluck 2018-1-12 10:53:53 | 只看该作者
全局:
say543 发表于 2018-1-11 15:08
需要考虑回朔吗ex : abb => acc => add if {b => c, cc=> dd} ?

应该不需要吧
回复

使用道具 举报

全局:
octluck 发表于 2018-1-11 13:42
如果你写出来能贴一个吗?或者站内也行,多谢啦

额,想了一晚上没想出来dfs+mem要怎么实现。感觉要保证所有应该被替换的substring都被替换好难。

想了个DP的解法,不知道对不对:
  1. class Solution {
  2.         Map<String, String> dict;

  3.         public List<String> replaceString (String s1, List<String> s2, List<String> s3) {
  4.                 dict = new HashMap<String, String>();
  5.                 for (int i=0; i<s2.size(); i++) {
  6.                         dict.put(s2.get(i), s3.get(i));
  7.                 }
  8.                
  9.                 List<List<String>> dp = new LinkedList<List<String>>();
  10.                 dp.add(new LinkedList<String>());
  11.                 dp.get(0).add("");
  12.                
  13.                 for (int r=0; r<s1.length(); r++) {
  14.                         dp.add(new LinkedList<String>());
  15.                         for (int l=0; l<=r; l++) {
  16.                                 String key = s1.substring(l, r+1);
  17.                                 if (dict.containsKey(key)) {
  18.                                         String suffix = dict.get(key);
  19.                                         List<String> prefixs = dp.get(l);
  20.                                         for (String prefix: prefixs) {
  21.                                                 dp.get(r+1).add(prefix + suffix);
  22.                                         }
  23.                                 }
  24.                         }
  25.                         if (dp.get(r+1).size() == 0) {
  26.                                 List<String> prefixs = dp.get(r);
  27.                                 for (String prefix: prefixs) {
  28.                                         dp.get(r+1).add(prefix + s1.charAt(r));
  29.                                 }
  30.                         }
  31.                 }

  32.                 return dp.get(s1.length());
  33.         }
  34. }
复制代码
回复

使用道具 举报

🔗
bear3488 2018-1-12 13:29:56 | 只看该作者
全局:
我试着写了一个DFS的,没有lz说的memo的。。。不知道对不对

  1. class Solution{
  2.         vector<string>ReplaceStr(string S, vector<string>candidate, vector<string>target){
  3.         vector<string>res;
  4.         unordered_map<string,string>R;
  5.         for(int I = 0; I < candidate.size(); i++){
  6.                 R[candidate[i]] = target[i];
  7.         }
  8.         string cur = “”;
  9.         DFS(0,cur,S,R,res);
  10.         return res;

  11.         }
  12.         void DFS(int index, string & cur, string& S, unordered_map<string,string>&R, vector<string>&res){
  13.         if(index == S.length()){
  14.                 res.push_back(cur);
  15.                 return;       
  16.         }
  17.         bool canReplace = false;
  18.         for( auto it: R){
  19.                 if(index + it.first.length()-1 >= n)
  20.                         continue;
  21.                 string str = S.substr(index,it.first.length());
  22.                 if(str == it.first){
  23.                         canReplace = true;
  24.                         DFS(index + it.first.length(), cur+it.second,S,R,res);
  25.                 }
  26.         }
  27.         if(!canReplace)
  28.                 DFS(index+1,cur+S[index],S,R,res);
  29.         }
  30. };
复制代码

补充内容 (2018-1-12 13:30):
贴上去发现tab的好奇怪。。。。将就看吧。。。。
回复

使用道具 举报

🔗
say543 2018-1-12 15:53:34 | 只看该作者
全局:
我想memo 大概就是[i,j] pair 的substring 记录可能的substring 取代 这样吧 ?还是有更好的方法
回复

使用道具 举报

🔗
bear3488 2018-1-13 06:19:56 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
joyoox 2018-2-17 13:45:13 | 只看该作者
全局:
楼主求问timeline
回复

使用道具 举报

🔗
bingmo 2018-2-21 03:57:16 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

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

本版积分规则

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