一串连续字符被称作围栏当且仅当它由间隔的 | 和 - 组成。比如 |-|-|-|或-|-| 。注意|-||-|或者 - - 不是围栏, 因为每个都包含了两个或两个以上的相同连续字符。给你一个字符串, 请找出它的最长的一个可以称作围栏的字串长度,用c语言
时间: 2024-06-16 14:04:20 浏览: 102
要找出一个字符串中最长的可以称作围栏的子串长度,可以使用以下C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
int isFence(char* str, int start, int end) {
// 判断子串是否为围栏
for (int i = start; i <= end; i++) {
if (str[i] != '|' && str[i] != '-') {
return 0;
}
}
return 1;
}
int longestFenceLength(char* str) {
int maxLength = 0;
int length = strlen(str);
for (int i = 0; i < length; i++) {
for (int j = i; j < length; j++) {
if (isFence(str, i, j)) {
int fenceLength = j - i + 1;
if (fenceLength > maxLength) {
maxLength = fenceLength;
}
}
}
}
return maxLength;
}
int main() {
char str[] = "|-|-|-|";
int length = longestFenceLength(str);
printf("最长的围栏字串长度为:%d\n", length);
return 0;
}
```
这段代码中,`isFence`函数用于判断一个子串是否为围栏,`longestFenceLength`函数用于找出字符串中最长的围栏子串的长度。在`main`函数中,我们可以将待检查的字符串赋值给`str`数组,并调用`longestFenceLength`函数来获取最长围栏子串的长度。最后,使用`printf`函数将结果输出到控制台。
阅读全文