c++求出所给出的字符串中最长的字母子串
时间: 2023-09-12 08:02:51 浏览: 171
可以使用动态规划的方法来解决这个问题。定义一个数组 dp,其中 dp[i] 表示以第 i 个字符结尾的最长字母子串的长度。
初始化 dp[0] = 1,然后遍历字符串,对于每个位置 i,如果当前字符是字母,则 dp[i] = dp[i-1] + 1,否则 dp[i] = 0。
最后遍历 dp 数组,找到最大的数值,就是最长的字母子串的长度。
下面是 C++ 代码实现:
```c++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int longestLetterSubstring(string s) {
int n = s.length();
vector<int> dp(n, 0);
dp[0] = isalpha(s[0]) ? 1 : 0;
int ans = dp[0];
for (int i = 1; i < n; i++) {
if (isalpha(s[i])) {
dp[i] = dp[i-1] + 1;
} else {
dp[i] = 0;
}
ans = max(ans, dp[i]);
}
return ans;
}
int main() {
string s = "abc123def456ghij";
cout << longestLetterSubstring(s) << endl; // output: 4
return 0;
}
```
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![cpp](https://img-home.csdnimg.cn/images/20250102104920.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)