这些迭代器有什么问题-最大的回文子字符串

时间:2019-04-26 18:14:47

标签: c++

我最近了解了迭代器,并尝试将其应用于编码挑战(https://www.codewars.com/kata/54bb6f887e5a80180900046b/)。

int palindromeDetected(std::string::const_iterator iter, std::string s){
  int range = 1;
//check if outer characters match, with increasing range
  for(; *(iter-range) == *(iter+range+1) && iter-range != s.begin()-1 && iter+range+2 != s.end(); range++);
  return range*2;
}

int longest_palindrome(const std::string &s)
{
  unsigned maxLength = 0;
  if (!s.empty()) maxLength++;
  for(auto iter = s.begin(); iter != s.end(); iter++){
    if(*iter == *(iter+1)){  //if curr char matches next char check for palindrome
      unsigned tmp = palindromeDetected(iter, s);
      if(tmp > maxLength) maxLength = tmp;
    }
  }
  return maxLength;
}

我试图在palindromeDetected for循环中跟踪迭代器,看来它们不知道在哪里停止。

例如,对于“ aaaa”,它将检测到第二个字母上的最大回文,跳入palindromeDetected函数并检测外部的'a'字符,将范围增加到2。这是正确的,但并不止于此。除了返回2 * 2之外,它还会检测显示为空白的相似字符。

iterators

怎么了?

0 个答案:

没有答案