学校后勤网站建设方案,17网站一起做网店池尾商圈,招商网站建设服务商,wordpress 页面分级文章目录 题目描述输入描述输出描述示例1说明#xff1a; 示例2说明#xff1a; 说明#xff1a;代码注意#xff1a;printf中的%c 、%s 题目描述
给你一个字符串 s#xff0c;字符串s首尾相连成一个环形 #xff0c;请你在环中找出 ‘o’ 字符出现了偶数次最长子字符串… 文章目录 题目描述输入描述输出描述示例1说明 示例2说明 说明代码注意printf中的%c 、%s 题目描述
给你一个字符串 s字符串s首尾相连成一个环形 请你在环中找出 ‘o’ 字符出现了偶数次最长子字符串的长度。
给你一个字符串 s字符串s首尾相连成一个环形 请你在环中找出 ‘o’ 字符出现了偶数次最长子字符串的长度。
输入描述
输入是一串小写字母组成的字符串
备注 1 s.length 5 x 10^5 s 只包含小写英文字母
输出描述
输出是一个整数
示例1
输入
alolobo输出
6说明
最长子字符串之一是 “alolob”它包含’o’ 2个。
示例2
输入
looxdolx输出
7说明
最长子字符串是 “oxdolxl”由于是首尾连接在一起的所以最后一个 ‘x’ 和开头的 ‘l’是连接在一起的此字符串包含 2 个’o’ 。
示例3 输入
bcbcbc输出
6说明
这个示例中字符串 “bcbcbc” 本身就是最长的因为 ‘o’ 都出现了 0 次。
代码
#include stdio.h
#include stdlib.h
#include string.hint main() {char input[500001]; // 创建一个字符数组用于存储用户输入的字符串最大长度500000fgets(input, sizeof(input) - 1, stdin); // aloloboinput[strcspn(input, \n)] \0; // 移除可能存在的换行符int len strlen(input); // 获取字符串的长度int num 0; // 初始化o字符的计数器// char *str malloc(len * 2 1); // 动态分配内存// strcpy(str, input);// strcat(str, input);// // printf(%s, str); // aloloboalolobo// // 遍历字符串统计 o 字符的数量// for (int i 0; i len * 2; i) {// for (int j i; j i len; j) {// if (input[j] o) {// num;// }// }// }// 遍历字符串统计o字符的数量for (int i 0; i len; i) {if (input[i] o) {num;}}if (num % 2 0) {printf(%d, len);} else {printf(%d, len - 1);}return 0;
}注意printf中的%c 、%s
在C语言中printf()函数的格式说明符对于输出字符和字符串有不同的含义 %c用于输出单个字符。例如 printf(%c, str[i]);这行代码会逐个输出字符串 str 中每个位置索引为 i的字符。 %s用于输出整个字符串。例如 printf(%s, str);如果你想通过 %s 输出一个字符串你需要传入字符串的首地址而不是单个字符的位置。 如果你想循环打印出字符串中的每一个字符则应该使用 %c
for (int i 0; i len * 2; i) {printf(%c, str[i]);
}