【编程实现】 给定一个含有字母和数字的字符串,输出此字符串中最长的数字子串的长度。 如:字符串“a2a22d”,最长的数字子串为22,长度为2,故输出2 字符串“lg12h567i765”,最长的数字子串为567和765,长度都为3,故输出3 【输入描述】 输入一个含有字母和数字的字符串 (5<字符串长度<101) 【输出描述】 输出此字符串中最长的数字子串的长度 【样例输入】 a2a22d 【样例输出】 2
时间: 2024-02-13 07:04:53 浏览: 77
以下是Python的实现代码:
```python
s = input() # 输入字符串
max_len = 0 # 记录最长数字子串的长度
cur_len = 0 # 记录当前数字子串的长度
for c in s:
if c.isdigit(): # 如果当前字符是数字
cur_len += 1
else: # 如果当前字符不是数字
max_len = max(max_len, cur_len) # 更新最长数字子串的长度
cur_len = 0 # 重置当前数字子串的长度
max_len = max(max_len, cur_len) # 处理最后一个数字子串的长度
print(max_len) # 输出结果
```
算法思路如下:
遍历字符串中的每个字符,如果当前字符是数字,则将当前数字子串的长度加1;如果当前字符不是数字,则更新最长数字子串的长度,并将当前数字子串的长度重置为0。
需要注意的是,在遍历完整个字符串后,还需要处理最后一个数字子串的长度。
相关问题
给定一个含有字母和数字的字符串,输出此字符串中最长的数字子串的长度。
可以使用正则表达式来匹配字符串中的数字子串,然后找出最长的数字子串的长度。以下是示例代码:
import re
def longest_digit_substring(s):
digit_substrings = re.findall(r'\d+', s)
if not digit_substrings:
return 0
return max(len(substring) for substring in digit_substrings)
# 示例用法
s = 'abc123def4567ghi89'
print(longest_digit_substring(s)) # 输出 4,因为最长的数字子串是 '4567',长度为 4。
最长公共子串的长度 描述:给定两个字符串str1和str2,输出两个字符串的最长公共子串的长度(假设str1和str2的最长公共子串存在且唯一)。 输入样例: 1AB2345CD 12345EF 输出样例: 4 说明:最长的公共子串为2345;java
可以使用动态规划来解决这个问题。
设 $dp[i][j]$ 表示以 $str1[i]$ 和 $str2[j]$ 结尾的最长公共子串的长度。当 $str1[i]$ 和 $str2[j]$ 相等时,$dp[i][j]$ 可以转移为 $dp[i-1][j-1]+1$,否则 $dp[i][j]$ 为 0。最后取所有 $dp[i][j]$ 中的最大值即为最长公共子串的长度。
具体实现时,可以用一个变量 $maxLen$ 来记录最大值,每次更新 $dp[i][j]$ 时,如果 $dp[i][j]>maxLen$ 则更新 $maxLen$。
Java 代码如下:
阅读全文