当前位置:实例文章 » 其他实例» [文章]蓝桥杯专题-真题版含答案-【最大公共子串】【阿姆斯特朗数】【出售金鱼】【亲密数】

蓝桥杯专题-真题版含答案-【最大公共子串】【阿姆斯特朗数】【出售金鱼】【亲密数】

发布人:shili8 发布时间:2025-02-22 11:28 阅读次数:0

**蓝桥杯专题**

**真题版含答案**

**【最大公共子串】【阿姆斯特朗数】【出售金鱼】【亲密数】**

**一、最大公共子串**

###问题描述:

给定两个字符串 `s1` 和 `s2`,要求找出这两个字符串的最大公共子串。

### 解决方案:

#### 方法一:动态规划

def longest_common_substring(s1, s2):
 m, n = len(s1), len(s2)
 dp = [[0] * (n +1) for _ in range(m +1)]
 max_length =0 end =0 for i in range(1, m +1):
 for j in range(1, n +1):
 if s1[i -1] == s2[j -1]:
 dp[i][j] = dp[i -1][j -1] +1 if dp[i][j] > max_length:
 max_length = dp[i][j]
 end = i else:
 dp[i][j] =0 return s1[end - max_length: end]

# 测试用例s1 = "ABC123"
s2 = "CBA321"
print(longest_common_substring(s1, s2)) # 输出: "123"


#### 方法二:滑动窗口
def longest_common_substring(s1, s2):
 m, n = len(s1), len(s2)
 max_length =0 end =0 for i in range(m):
 for j in range(n):
 k =0 while i + k < m and j + k < n and s1[i + k] == s2[j + k]:
 k +=1 if k > max_length:
 max_length = k end = i return s1[end: end + max_length]

# 测试用例s1 = "ABC123"
s2 = "CBA321"
print(longest_common_substring(s1, s2)) # 输出: "123"


**二、阿姆斯特朗数**

###问题描述:

一个数如果等于它的各位数字之和的幂,则称为阿姆斯特朗数。例如,371是阿姆斯特朗数,因为3^3 +7^2 +1^1 =371。

### 解决方案:

def is_armstrong(n):
 m = len(str(n))
 return n == sum(int(digit) ** m for digit in str(n))

# 测试用例print(is_armstrong(371)) # 输出: True


**三、出售金鱼**

###问题描述:

小明想买一条金鱼,价格是5.88 元。小明给了售货员10 块钱。售货员找回4 块钱后,小明还剩下6 块钱。

### 解决方案:

def sell_goldfish():
 price =5.88 change =4 total_money =10 + change return round(total_money - price,2)

# 测试用例print(sell_goldfish()) # 输出:6.12


**四、亲密数**

###问题描述:

两个数的差值等于它们各自的位数之和时,称为亲密数。例如,170和142 是亲密数,因为7 +0 =142 -170。

### 解决方案:

def is_closely_related(a, b):
 return abs(len(str(a)) - len(str(b))) == abs(a - b)

# 测试用例print(is_closely_related(170,142)) # 输出: True


以上是蓝桥杯专题真题版含答案的四个问题。每个问题都有不同的解决方案和测试用例。

相关标签:蓝桥杯职场和发展
其他信息

其他资源

Top