下列程序段的功能是判断字符串是否对称,对称返回1,不对称返回0,请将缺失处处缺失程序补充完整。 1 2 3 4 5 6 bool fun(string str) { int i=0,j=0; j = ____; for (j--; i < j && str[i]==str[j]; i++, j--); return i <= j; } Ai+1 Bi Cstrlen(str) Dstr.size() 正确答案:D为什么是D,并解释代码
时间: 2024-04-26 15:21:57 浏览: 22
在C++中,字符串可以使用两种方式表示:使用字符数组和使用 string 类型。其中,string 类型中有一个成员函数 size() 可以返回字符串的长度,因此可以使用 `str.size()` 来获取字符串的长度。因此,选项 D 是正确的。
该程序的实现思路是使用双指针,i 指向字符串的头部,j 指向字符串的尾部。先将 j 指向字符串的最后一个字符,然后每次将 i 后移一位,j 前移一位,比较 str[i] 和 str[j] 是否相等,如果相等则继续比较,直到 i >= j。如果在比较中发现有不相等的字符,则说明该字符串不是对称的,返回 0;否则,说明该字符串是对称的,返回 1。
相关问题
C语言生成一段代码:由键盘任意输入一串字符,判断其是否为回文。 回文是首尾对称相等的字符串,如:abcdcba是回文
回文判断代码示例:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char str[MAX_LEN];
int len, i;
// 读入一行字符串
printf("请输入一行字符串:\n");
fgets(str, MAX_LEN, stdin);
len = strlen(str) - 1; // 去掉末尾的换行符
for (i = 0; i < len / 2; i++) {
if (str[i] != str[len - i - 1]) {
printf("不是回文串\n");
return 0;
}
}
printf("是回文串\n");
return 0;
}
```
该程序首先读入一行字符串,然后通过比较首尾字符是否相等来判断是否为回文字符串。注意要去掉字符串末尾的换行符。
【二叉树】对称二叉树 如果二叉树的左右子树的结构是对称的,即两棵子树皆为空,或者皆不空,则称该二叉树是对称的。编程判断给定的二叉树是否对称。 例:如下图中的二叉树T1是对称的,T2是不对称的。 二叉树用顺序结构给出,若读到#则为空,二叉树T1=ABCDE,T2=ABCD#E,如果二叉树是对称的,输出“Yes”,反之输出“No”。 输入说明: 一行字符串,表示二叉树的顺序存储序列,用字符#代表空结点,长度不大于1000。 输入说明: 如果二叉树是对称的,输出“Yes”,反之输出“No”。 输入示例: ABCDE 输出示例: Yes。以此写一段cpp代码
以下是一段C++代码,用来判断给定的二叉树是否对称:
```c++
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 1010;
char tree[MAXN];
bool isSymmetric(char* left, char* right) {
if (*left == '#' && *right == '#') { // 左右子树都为空
return true;
}
if (*left == '#' || *right == '#') { // 左右子树一个为空,一个不为空
return false;
}
if (*left != *right) { // 左右子树根节点不同
return false;
}
return isSymmetric(left + 1, right - 1); // 递归判断左右子树是否对称
}
int main() {
cin >> tree;
int len = strlen(tree);
if (len % 2 == 0) { // 如果字符串长度为偶数,肯定不对称
cout << "No" << endl;
return 0;
}
char* left = tree + 1;
char* right = tree + len - 2;
if (isSymmetric(left, right)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
```
该程序首先读入二叉树的顺序存储序列,然后判断字符串长度是否为偶数。如果字符串长度为偶数,肯定不对称,直接输出"No"。否则,定义指针left指向字符串的第2个字符,指针right指向字符串的倒数第2个字符,然后调用isSymmetric函数来判断左右子树是否对称。isSymmetric函数的实现比较简单:如果左右子树都为空,返回true;如果左右子树一个为空,一个不为空,返回false;如果左右子树根节点不同,返回false;否则,递归判断左右子树是否对称。最终,如果二叉树对称,输出"Yes",否则输出"No"。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.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)