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

Indeed 电面挂经

🔗
6zgzdhpUS 2019-1-30 04:07:54 | 只看该作者
全局:
愿意与楼主讨论
#include <vector>
#include <iostream>
#include <algorithm>
#include <unordered_set>
#include <sstream>
#include <string>
using namespace std;
/*
题意: 给一个word的set,给一个句子,把所有该word左右加上tag(<b><\b>)注意必须是单词匹配,不能是substring,follow up是,如果要考虑一些比如复数s, 逗号这种,怎么做比较好
比如str=”ABC  BC CD” set={“BC ”,”D”}
*/
/*
思路:遍历set,然后不停用find("")来查找,只要不是string::npos就行,然后前后插入这个<b></b>就行,然后i下个查找的位置是当前位置加上
<b>...(字符串长度)</b>的总长度,有无,结尾有都都无所谓
*/
class Solution {
public:
   string helper(string &in,unordered_set<string> s){
     string s1="<b>",s2="</b>";
     for(auto a:s){
        int i=0;//起始位置的下标
        while(in.find(a,i)!=string::npos){
          i=in.find(a,i);
          int end=i+a.size();//</b>的位置
          //先插入后半部分
          in.insert(end,s2);
          //再插入前部分
          in.insert(i,s1);
          //然后下个查找的其实位置
          i+=s1.size()+a.size()+s2.size();
        }
     }
     return in;
   }
};

int main()
{
  unordered_set<string> dic{"BC","SD"};
  string str="ABC,BC CDE, BCU ESD BRSD CEGD D SD";
  Solution *s=new Solution();
  cout<<s->helper(str,dic);
  return 0;
}

运行结果是:"A<b>BC</b>,<b>BC</b> CDE, <b>BC</b>U E<b>SD</b> BR<b>SD</b> CEGD D <b>SD</b>";
回复

使用道具 举报

🔗
talentednew 2019-2-15 01:18:58 | 只看该作者
全局:
利口  原题 应该是狗家 tag下面的
回复

使用道具 举报

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

本版积分规则

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