lsmCC 发表于 2023-10-20 12:09:18

字符串中最长的连续出现的字符

#include <bits/stdc++.h>
using namespace std;
char b;
int main()
{
    int n;
    string a;
    while(n--)
    {
      cin>>a;
      for(auto i:a)
      {
            b++;
      }
      
      for(int j=1;j<strlen(b),j++)
      {
         if(b>b)
         {
               
         }
      }
      
    }
}
修改代码,题目链接:https://www.acwing.com/problem/content/773/,想一半没有思路了

isdkz 发表于 2023-10-20 12:09:25

你好!根据题目要求,我们需要找出字符串中最长的连续出现的字符。下面是修改后的代码:

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    cin >> n;
    while (n--)
    {
      string a;
      cin >> a;
      int maxLen = 1;// 最长连续出现字符的长度
      int curLen = 1;// 当前连续出现字符的长度

      for (int i = 1; i < a.length(); i++)
      {
            if (a[ i] == a)
            {
                curLen++;
                maxLen = max(maxLen, curLen);
            }
            else
            {
                curLen = 1;
            }
      }

      cout << maxLen << endl;
    }

    return 0;
}


这段代码的思路是遍历输入的字符串,当当前字符与前一个字符相同时,当前连续出现字符的长度加1,并更新最长连续出现字符的长度。当当前字符与前一个字符不同时,将当前连续出现字符的长度重置为1。最后输出最长连续出现字符的长度。

希望能帮到你!如果还有其他问题,请随时提问。

陶远航 发表于 2023-10-20 12:10:07

你的代码有一些问题,我会帮你修改并提供一个解决方案。这个问题的关键是找到字符串中最长的连续字符。我们可以通过遍历字符串,比较当前字符和前一个字符是否相同,如果相同,我们就增加计数器,否则我们就重置计数器。同时,我们需要一个变量来保存最长的连续字符长度和对应的字符。

以下是修改后的代码:

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    while(n--) {
      string a;
      cin >> a;
      int maxCount = 0;
      char maxChar = a;
      int currentCount = 1;
      for(int i = 1; i < a.size(); i++) {
            if(a[ i] == a) {
                currentCount++;
            } else {
                currentCount = 1;
            }
            if(currentCount > maxCount) {
                maxCount = currentCount;
                maxChar = a[ i];
            }
      }
      cout << \"The longest consecutive character is \" << maxChar << \" with length \" << maxCount << endl;
    }
    return 0;
}


这段代码首先读取测试用例的数量,然后对每个测试用例,读取字符串并遍历。如果当前字符和前一个字符相同,就增加计数器,否则重置计数器。如果当前计数器的值大于最大计数器的值,就更新最大计数器和对应的字符。最后,输出最长的连续字符和对应的长度。

注意,这段代码假设输入的字符串至少有一个字符,并且只包含小写字母。如果输入可能包含大写字母或其他字符,或者可能为空,你可能需要修改代码以适应这些情况。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案

Mike_python小 发表于 2023-10-20 12:10:52

你的代码中存在一些问题。下面是修改后的代码:


#include <iostream>
#include <cstring>
using namespace std;

int main() {
    int n;
    cin >> n;
   
    while (n--) {
      string a;
      cin >> a;
      
      int b{0}; // 用一个数组来记录每个字母出现的次数
      
      for (auto c : a) {
            b++;
      }
      
      int maxCount = 0; // 最大连续出现次数
      char maxChar = ' '; // 最长连续出现的字符
      
      int count = 1; // 当前字符连续出现的次数
      
      for (int i = 1; i < a.length(); i++) {
            if (a == a) {
                count++;
            } else {
                if (count > maxCount) {
                  maxCount = count;
                  maxChar = a;
                }
                count = 1;
            }
      }
      
      // 检查最后一个字符
      if (count > maxCount) {
            maxCount = count;
            maxChar = a;
      }
      
      cout << maxChar << " " << maxCount << endl;
    }
   
    return 0;
}


修改后的代码使用了一个大小为26的整型数组b,用来记录每个字母出现的次数。遍历字符串a中的每个字符,然后根据字符-'a'的值将其对应的次数加1。

接下来,使用一个循环来查找最长连续出现的字符。使用变量count来记录当前字符连续出现的次数。当遇到不同的字符时,将count与maxCount进行比较,更新最大连续出现次数和最长连续出现的字符。

最后,输出最长连续出现的字符和次数。

希望这样的修改可以帮助到你。如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

jackz007 发表于 2023-10-20 16:14:52

本帖最后由 jackz007 于 2023-10-20 16:24 编辑

#include <bits/stdc++.h>
using namespace std                           ;

int main()
{
      char c , g                            ;
      int b , i , k , m                     ;
      string a                              ;
      cin >> a                              ;
      if(a) {
                for(b = i = m = 1 , c = g = a ; a ; i ++) {
                        if(a == c) {          // 字符连续相同
                              b ++          ;// 连续相同字符计数
                        } else {               // 字符改变
                              if(b > m) {      // 判定当前已统计字符是否属于出现次数最多
                                        m = b ;// 是,记录出现次数
                                        g = c ;// 记录该字符
                              }
                              b = 1         ;// 初始化连续出现字符计数器为 1
                              c = a      ;// 更换记录字符以便继续比较
                        }
                }
      }
      cout << g << " : " << m << endl       ;
}
      编译、运行实况:
D:\\C>g++ -o a a.c

D:\\C>a
abcdeaaaxxyyzzqrstttttttabctt
t : 7

D:\\C>
页: [1]
查看完整版本: 字符串中最长的连续出现的字符