用于查找返回true / false的n个连续字符的函数

时间:2016-11-23 10:49:26

标签: c++ boolean

当且仅当char* s包含n个连续相同符号的序列时,我希望有一个返回true的函数。例如,如果我们有"aaac"n=3,我希望函数返回true。

我对代码的想法是:

bool g(char* s, int n){
    if(s[0]==0) return true;
    for (int i=0; s[i+1]!=0;i++){
        for (int j=i; s[i+1]!=0;j++){
         while(int a != n){
            if(s[i]==s[i+j]){
             a++;
            }
         }
        }  
    } 
}
int main() {
    cout<< g("aaac",3);
}

我知道代码不完整但问题是我不知道我需要return true在哪里以及return false放在哪里。

而不是对此问题进行投票请解释它有什么问题?

1 个答案:

答案 0 :(得分:2)

你的功能不必要地复杂。您可以使用单个循环执行此操作,如下所示:

  • 制作一个计数器,并将其设置为零
  • 检查每对连续字符,即*s*(s+1)
  • 如果相同,请将计数器设为零
  • 否则,递增计数器;如果它达到n,请返回true
  • 如果到达循环的末尾,当s指向null终止符时,返回false

检查差异可以这样做:

if (*(s+1) == *s) {
    count++;
    if (count == n) {
        return true;
    }
} else {
    count = 0;
}