我去面试,boos 给出了个。动态规划的题目:

‘’‘’‘’

A = "asdf"
B = "axazxcv" S = "axasazdxfcv" 字符串A 和 字符串B A 和 B 拆散组合成 S。 但是相对位置上不能变。
判断 S 这个字符串,是否是由 AB 组成并且 相对位置不变, 如果是 返回Ture 否则False ##注:A串 和 B串。 是有重复的的字符的。 暂且忽略特殊字符的问题。
例:
  A = "asdf"
  B = "axazxcv"
  S = "axasazdxfcv"
  return Ture
  =============================================
  A = "asdf"
  B = "axazxcv"
  S = "xaasazdxfcv"
  return False

初一判断 我当时的想法完全是错的。  以下的是回家的路上想到的。

1. 因为重复的问题,所以就不能单单的只靠 一个字符单纯的判断, S串中的某一个字符, 是属于A的还是属于B的。

2. 所以一定是 S 的当前,某一个字符时,要判断一下 他前面的那个字符,是A的还是B的。

可以这样去理解:

A 表示为 A[0:i]      B 表示为 B[0:j]

S[0:i+j]   ==   A[0:i] + B[0:j] 的组合   ##(这里不是字符串拼接,)

然后状态的转移公式:  f(i,j) = (f(i-1,j) and A[i-1]==c[i+j-1]) or f(i,j-1) and B[i-1]==S[i+j-1])

A = "asdf"
B = "axazxcv" S = "axasazdxfcv" def static(A, B, S):
if len(A+B) != len(S): # 首先判断 两个的长度,是否相同。
return False
a = len(A)+
b = len(B)+1
   # 初始化二维列表。
li = [[[] for _ in range(a)] for _ in range(b)]
li[][] = True
for i in range(, a):
li[][i] = li[][i-] and A[i-] == S[i-] for j in range(, b):
li[j][] = li[j-][] and B[j-] == S[j-]
  # 以上两部做的事情 可以看下面的图:
  # 这里才是开始计算
for i in range(, a):
for j in range(, b):
li[j][i] = (li[j][i-] and A[i-] == S[i+j-]) or (li[j-][i] and B[j-] == S[i+j-]) for n in li:
print(n)
return li[j][i]

以下是 运行的结果。


print(static(A, B, S))

[True, True, False, False, False]
[True, False, False, False, False]
[True, True, True, False, False]
[True, False, True, False, False]
[False, False, True, True, False]
[False, False, False, True, True]
[False, False, False, False, True]
[False, False, False, False, True]
True
           a      s     d      f   
  [True, True, False, False, False]
a [True, [], [], [], []]
x [True, [], [], [], []]
a [True, [], [], [], []]
z [False, [], [], [], []]
x [False, [], [], [], []]
c [False, [], [], [], []]
v [False, [], [], [], []] # 这里就是判断出S这个字符串的 前A的长度位上,于A有几个相同,显示在 第一行。
# 前B 长度上,与B有几个相同。 显示在一列上。
# 通过这个 应该就能看出, S这个字符串第一个位置上的字符, 是和 A 相同还是 B相同。 我的例子上,是两个都相同 然后接下来就是 不好理解的地方了。
从 S 这个字符串第二个索引的位置开始,判断一下这个位置上的字符,是来自A[0-i]的某一个,还是来自B[0-j]的某一个。并且要与前一个字符进行比较。
比如:
  S的第二个字符x 他是属于B这个串的,B这个串中 a 字符的位置是在,数组中li[j][i-1]的这一行中。所以 A[i-1] == li[j][i-1] or B[j-1] == li[j-1][i] 返回的就使false
  但是 如果是 以下这种情况呢?
    A = "nsdf"
    B = "axazxcv"
    S = "anxsazdxfcv"
  S的第二个字符n 他是属于A这个串的,A这个串中 n 字符的位置是在,数组中li[j][i-1]的这一行中。所以 A[i-1] == li[j][i-1] or B[j-1] == li[j-1][i] 返回的就使Ture
A[i-1] == li[j][i-1] 判断 S 的当前某个字符, 和这个字符的前一个字符是不是 属于A这个字符串的。
B[j-1] == li[j-1][i] 判断 S 的当前某个字符, 和这个字符的前一个字符是不是 属于B这个字符串的。

问题的关键就是,把他理解成, 将 A 这个字符串拆散,然后随机的插入到了 B这个串的某一个位置上。
然后 我们循环 去确定S这个串上的每一个字符, 与 A或者B 对应位置上的某个字符相等。再加上与前面结果的 比较。 只有前面的是 Ture的情况下,S的当前
的某个字符,才能够是Ture。 否则就是 False。

这样 一级一级的判断下去,到最后一个的时候,如何使Ture 那个整个字符串就是 匹配的, 否则就是不匹配。

我也不知道解释的是不是到位, 如果那位大佬心情好的话,看到了这个解释。 请跟我讲一讲其中的原委。 感激不尽。

北京望京SOHO-电商墨镜面试题的更多相关文章

  1. 电商项目面试题 及mysql面试题 太难没啥用

    需要按照功能点把系统拆分,拆分成独立的功能.单独为某一个节点添加服务器.需要系统之间配合才能完成整个业务逻辑.叫做分布式.集群:同一个工程部署到多台服务器上.优点:1.把模块拆分,使用接口通信,降低模 ...

  2. 日本电商Rakuten:最凶猛的国际扩张者

    这是普及社(puji-she)第五篇关于电商开放平台的文章,今天关注日本的Rakuten,它是一家综合性的企业,核心业务包括电子商务.旅游.信用 及支付.金融证券.新闻门户等.本文关注Rakuten的 ...

  3. 电商平台如何接入快递鸟电子面单API?

    快递鸟是全球物流接口服务商,为电商 ERP.电商平台.仓储.清关公司提供物流跟踪.电子面单.智选物流.物流金融.在线下单等服务,解决电商的物流管理模块和金融模块.现就对快递鸟电子面单API做基本描述, ...

  4. VR全景:电商巨头的角逐

    VR全景智慧城市:京东推"京东梦"挑战淘宝Buy+ ,VR购物谁主沉浮? VR全景智慧城市是国内首家商业全景平台,结合先进VR虚拟现实技术,以线下实体为依托,将空间还原到线上,用户 ...

  5. 【Tableau】电商广告投放的地域分析

    分析师的职责是利用处理数据获取信息,提炼规律,帮助企业正确决策业务方向. 所以,一个好的分析师绝不能被数据所困,既要深入业务,理解业务,也要高瞻远瞩,以领导者的思维借助数据分析的辅助做出判断. [结构 ...

  6. Java生鲜电商平台-OMS订单系统中并发问题和锁机制的探讨与解决方案

    Java生鲜电商平台-OMS订单系统中并发问题和锁机制的探讨与解决方案 说明:Java开源生鲜电商中OMS订单系统中并发问题和锁机制的探讨与解决方案: 问题由来     假设在一个订单系统中(以火车票 ...

  7. L05 Laravel 教程 - 电商实战

    https://laravel-china.org/courses/laravel-shop https://laravel-china.org/topics/13206/laravel-shop-c ...

  8. Java生鲜电商平台-小程序或者APP优惠券的设计与源码实战

    Java生鲜电商平台-小程序或者APP优惠券的设计与源码实战 说明:Java生鲜电商平台-小程序或者APP优惠券的设计与源码实战,优惠券是一种常见的促销方式,在规定的周期内购买对应商品类型和额度的商品 ...

  9. 未来京东真能成为中国第一大B2C电商平台吗?

    ​     2月10日,京东集团在北京举行2017年"科技引领未来"开年年会.在本届年会上,京东宣布全面向技术转型.京东集团CEO刘强东正式对外公布未来12年的战略:在以人工智能为 ...

随机推荐

  1. permutation 2(递推 + 思维)

    permutation 2 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) ...

  2. nmap脚本nse的使用

    nmap脚本(nse)使用总结 0x01 nmap按脚本分类扫描 nmap脚本主要分为以下几类,在扫描时可根据需要设置--script=类别这种方式进行比较笼统的扫描: auth: 负责处理鉴权证书( ...

  3. AWS EC2 PV Drivers 驱动升级

    问题 从2019-10-23起,我的AWS实例不断的重启(大概6个小时左右),或者连接不上(远程连接不上并PING不通IP),但控制台显示running. 分析与解决方法 通过查看dump文件,发现是 ...

  4. Nginx-rtmp点播之业务流程分析

    1. 点播的播放流程分析 1.1 ngx_rtmp_cycle 在握手结束后,即进入该函数中做进一步处理. void ngx_rtmp_cycle(ngx_rtmp_session_t *s) { n ...

  5. [SQL 高级查询运算符的用法 UNION (ALL),EXCEPT(ALL),INTERSECT(ALL) ]

    今天看到 三个查询运算符,给大家分享分享 为此我建立了两张表分别为 Articles 和  newArticles 我建立的时候,只建立了一张表 Articles   ,表 newArticles 是 ...

  6. leetcode1281 整数的各位积和之差

    class Solution { public: int subtractProductAndSum(int n) { ; ; ){ ; n/=; prod*=r; add+=r; } int res ...

  7. Constructor、Method、Field 源码阅读

    AnnotatedElement /** * AnnotatedElement 接口表示目前正在此 VM 中运行的应用程序的一个已注解元素[类.方法.属性]. * 该接口允许反射性地读取注解.此接口中 ...

  8. 路由设置中"DHCP服务器"启用或不启用是干嘛的?

    “DHCP服务器”启用的话,每一台连接这个路由器的电脑都会自动获取一个IP地址,并且不会跟其他电脑的想冲突:“DHCP服务器”不启用就必须手动给每一台连接这个路由器的电脑设置本地连接里面的“inter ...

  9. Oracle测试JDBC工具类

    1 public class JdbcUtils { private static final String driverUrl = "oracle.jdbc.driver.OracleDr ...

  10. 麦香牛肉(dp 、数论)

    麦香牛肉 时间限制: 1 Sec  内存限制: 128 MB 题目描述 农夫约翰的奶牛几乎要武装暴动,因为他们听说麦当劳要推出新产品麦香牛肉.奶牛们要尽力阻止这种产品的上市.他们研究了一种“劣等包装” ...