771. 字符串中最长的连续出现的字符(DAY 22)

原题题目

在这里插入图片描述

代码实现

#include<iostream>

using namespace std;
int main()
{
    int n;
    cin >> n;
    
    while (n -- )
    {
        string s;
        cin >>s;
        
        int cnt=0;
        char c;
        
        for(int i=0;i<s.size();i++)
        {
            int j=i;
            while(j<s.size()&&s[j]==s[i])j++;
            
            if(j-i >cnt)cnt=j-i,c=s[i];
            i=j-1;
        }
        cout << c<< ' '<< cnt<< endl;
    }
    return 0;
}

解题思路

首先创建一个整型变量n 用来存放要输入的数据的多少。
while(n–)是一个很常用的循环,非常好用。
它的意思是,先把n"赋值给while" 让while进行判断,只要n不为零,那么就会执行循环,随后n-- 。
string 一个字符串s 用来存储输入的字符串,搭配循环,就能保证先输入一串字符,做接下来的操作,然后再输入第二组,做后面的操作。

int 一个(创建一个整型变量)cnt 当作计数器。
char一个c 用来输出我们相同的字符。

随后一个for循环遍历字符串数组,从0开始,到长度为字符串长度位置结束。
在这里插入图片描述

这一段就是一个典型的双指针算法,本质就是定义两个变量,遍历数组,做判断。

判断是否相等,相等了,j就++ ,如果j-i>cnt cnt=j-i
c=s[i]更新字符。随后输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张学恒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值