zoukankan      html  css  js  c++  java
  • 连续出现的字符

    描述

    给定一个字符串,在字符串中找到第一个连续出现至少k次的字符。

    输入第一行包含一个正整数k,表示至少需要连续出现的次数。1 <= k <= 1000。
    第二行包含需要查找的字符串。字符串长度在1到1000之间,且不包含任何空白符。输出若存在连续出现至少k次的字符,输出该字符;否则输出No。样例输入

    3
    abcccaaab

    样例输出

    c
    原代码:
    #include <iostream>
    using namespace std;
    int main()
    {
    	long n,k=1;
    	char t;
    	cin>>n;
    	string a;
    	cin>>a;
    	t=a[0];
    	if(a.size()==1&&n==1)
    	  {
    	  	 cout<<a;
    	  	 return 0;
    	  }
    	for(int i=1;i<a.size();i++)
    	   {
    	   	  if(a[i]==t)
    	   	   {
    	   	     k++;
    	   	     if(k>=n-1)
    		      {
    		    	cout<<t;
    		    	return 0;
    			  }
    		   }
    	   	  else{
    	   	    k=0;
    			t=a[i];	
    		  }
    	   }
    	cout<<"No";
    	return 0;
    }

    思路:定义t为当前连续的字符,k为当前连续次数,设定k初始值为第一个字符,出现次数为1次,再遍历一遍整个字符数组,连续出现就记下来,完成目标就“return 0”;
    只得了9分,当数据太大时需要优化
    改正后代码:

    #include <iostream>
    using namespace std;
    int k;
    string s;
    int main()
    {
    cin>>k>>s;
    for(int i=0;i<s.size();i++)
    {
    int sum=0;
    while(s[i]==s[i+1])
    {
    i++;
    sum++;
    }
    if(sum+1>=k)
    {
    cout<<s[i];
    return 0;
    }
    }
    cout<<"No";
    return 0;
    }

  • 相关阅读:
    java发送qq邮件
    HTTP3次握手和4次挥手
    Bootstrap面试题
    Bootstrap
    响应式布局
    JQuery思维导图
    JQuery相关知识点和面试题
    CSS思维导图
    前端面试题
    CSS3实现跑马效果
  • 原文地址:https://www.cnblogs.com/jr-ag/p/8552669.html
Copyright © 2011-2022 走看看