汇聚的一些OD机试题(迭代六)

## 1. 题目描述

查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。

注:子串的定义:将一个字符串删去前缀和后缀(也可以不删)形成的字符串。请和“子序列”的概念分开!

示例1:

```
输入:
    abcdefghijklmnop
    abcsafjklmnopqrstuvw

输出:jklmnop
```

## 2. Solution

```python
while True:
    try:
        a, b = input(), input()
if len(a) > len(b):
            a, b = b, a 
        res = ''
        for i in range(0, len(a)):
            for j in range(i+1, len(a)):
if a[i:j+1] in b and j-i+1 > len(res):
                    res = a[i:j+1]
        print(res)
    except:
        break
```
全部评论

相关推荐

头像
不愿透露姓名的神秘牛友
05-06 22:38
已编辑
农业银行信用卡中心 数据策略岗 26-28W 硕士985
点赞 评论 收藏
转发
## 1.题目描述给出4个1-10的数字,通过加减乘除运算,得到数字为24就算胜利,除法指实数除法运算,运算符仅允许出现在两个数字之间,本题对数字选取顺序无要求,但每个数字仅允许使用一次,且需考虑括号运算此题允许数字重复,如3 3 4 4为合法输入,此输入一共有两个3,但是每个数字只允许使用一次,则运算过程中两个3都被选取并进行对应的计算操作。示例1:```输入:7 2 1 10输出:true```## 2. Solution```pythondef helper(arr, item):    if len(arr) == 1:        return arr[0] == item    else:        for i in range(len(arr)):            m = arr[:i] + arr[i+1:]            n = arr[i]            if helper(m, item+n) or helper(m, item-n) or helper(m, item *n) or helper(m, item/n):                return True        return False         while True:    try:        if helper(list(map(int, input().split())), 24):            print('true')        else:            print('false')    except:        break```
查看1道真题和解析
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务