用C++代码写一个程序:求一个字符串中最长的连续出现的字符,输出该字符及其出现次数。字符串中无空白字符(空格、回车和tab),如果这样的字符不止一个,则输出出现最早的字符。
时间: 2023-05-30 16:03:05 浏览: 111
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
scanf("%s", str);
int len = strlen(str);
char maxChar = str[0];
int maxCount = 1;
int count = 1;
for (int i = 1; i < len; i++) {
if (str[i] == str[i - 1]) {
count++;
} else {
if (count > maxCount) {
maxChar = str[i - 1];
maxCount = count;
}
count = 1;
}
}
if (count > maxCount) {
maxChar = str[len - 1];
maxCount = count;
}
printf("%c %d\n", maxChar, maxCount);
return 0;
}
```
相关问题
用C++代码实现 输入一个字符串,求该字符串中最长连续数字序列出现的起始位置及其长度
以下是用 C++ 实现输入一个字符串,求该字符串中最长连续数字序列出现的起始位置及其长度的代码:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
getline(cin, s); // 输入字符串
int start = -1; // 最长连续数字序列的起始位置
int len = 0; // 最长连续数字序列的长度
int curStart = -1; // 当前连续数字序列的起始位置
int curLen = 0; // 当前连续数字序列的长度
for (int i = 0; i < s.length(); i++) {
if (isdigit(s[i])) { // 如果当前字符是数字
if (curStart == -1) { // 如果当前没有连续数字序列
curStart = i; // 更新当前连续数字序列的起始位置
}
curLen++; // 更新当前连续数字序列的长度
} else { // 如果当前字符不是数字
if (curLen > len) { // 如果当前连续数字序列比最长连续数字序列更长
start = curStart; // 更新最长连续数字序列的起始位置
len = curLen; // 更新最长连续数字序列的长度
}
curStart = -1; // 重置当前连续数字序列的起始位置
curLen = 0; // 重置当前连续数字序列的长度
}
}
if (curLen > len) { // 如果最后一个连续数字序列比最长连续数字序列更长
start = curStart; // 更新最长连续数字序列的起始位置
len = curLen; // 更新最长连续数字序列的长度
}
if (start == -1) { // 如果没有连续数字序列
cout << "No consecutive digit sequence found." << endl;
} else { // 如果有连续数字序列
cout << "The longest consecutive digit sequence starts at position " << start << " and has length " << len << "." << endl;
}
return 0;
}
```
输入一个字符串后,程序会输出形如 "The longest consecutive digit sequence starts at position x and has length y." 或者 "No consecutive digit sequence found." 的信息,其中 x 和 y 分别为最长连续数字序列的起始位置和长度。
输入一个字符串,求该字符串中最长连续数字序列出现的起始位置及其长度。C++
好的,以下是实现思路和代码:
1. 遍历字符串,记录当前连续数字序列的起始位置和长度,同时记录最长序列的起始位置和长度。
2. 当遇到非数字字符时,判断当前连续数字序列是否比最长序列长,若是则更新最长序列的起始位置和长度。
3. 最后输出最长序列的起始位置和长度。
代码如下:
```c++
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
getline(cin, s); // 输入字符串
int start = -1, len = 0; // 最长序列的起始位置和长度
int cur_start = -1, cur_len = 0; // 当前序列的起始位置和长度
for (int i = 0; i < s.length(); i++) {
if (isdigit(s[i])) { // 如果是数字字符
if (cur_start == -1) { // 如果是序列的第一个数字
cur_start = i;
cur_len = 1;
} else { // 如果是序列中的其他数字
cur_len++;
}
} else { // 如果是非数字字符
if (cur_start != -1) { // 如果当前序列已结束
if (cur_len > len) { // 如果当前序列比最长序列长
start = cur_start;
len = cur_len;
}
cur_start = -1;
cur_len = 0;
}
}
}
if (cur_start != -1 && cur_len > len) { // 处理结尾的数字序列
start = cur_start;
len = cur_len;
}
if (start == -1) { // 如果没有数字序列
cout << "No number sequence found." << endl;
} else {
cout << "The longest number sequence starts at position " << start << " and has length " << len << "." << endl;
}
return 0;
}
```
注意:这个代码中假设数字序列是指由数字字符组成的连续序列,不包括小数点、正负号等其他字符。如果需要包括这些字符,需要对代码进行相应修改。
阅读全文