程序查找给定字符串中回文子串的数量
Program to find the number of substrings that are palindromes in a given string
这是我的代码,但是函数 countPalindromes
由于某种原因总是 returns 0。我无法理解为什么
bool isPalindrome(string s) {
int x=0;
int r= s.length() -1;
while(r>1){
if(s[x++]!=s[r--])
{
cout<<"Not Palindrome";
}
else
{
return true;
}
}
}
int countPalindromes(string s) {
int n= s.length();
int counter=0;
for(int i = 0; i<n ; i++)
{
for(int j=1; j< n -i ; j++)
{
if(isPalindrome(s.substr(i,j)=true))
{
counter+=1;
}
}
}
return counter;
}
int main() {
cout<<countPalindromes("ABA");
return 0;
}
countPalindromes() 和 isPalindrome() 函数都有很多错误。
- 首先在 isPalindrome() 函数中,检查直到 r>1。您必须检查整个字符串。为此,条件将是 r>=0。只要有字符匹配,你就是 returning true。在确定位置 S[i] 的任何字符不等于 S[n-i-1](其中 n 是字符串的长度)后,您可以 return 为真。
- 其次是 countPalindromes() 函数,您在比较子字符串时传递了错误的参数。
看看你修改后的代码就明白了。
bool isPalindrome(string s) {
int x=0;
int r= s.length() -1;
while(r>=0){
if(s[x++]!=s[r--])
{
//cout<<"Not Palindrome"<<endl;
return false;
}
}
return true;
}
int countPalindromes(string s) {
int n= s.length();
int counter=0;
for(int i = 0; i<n ; i++)
{
for(int j=1; j<= n -i ; j++)
{
if(isPalindrome(s.substr(i,j))==true)
{
counter+=1;
}
}
}
return counter;
}
int main() {
cout<<countPalindromes("ABA");
return 0;
}
这是我的代码,但是函数 countPalindromes
由于某种原因总是 returns 0。我无法理解为什么
bool isPalindrome(string s) {
int x=0;
int r= s.length() -1;
while(r>1){
if(s[x++]!=s[r--])
{
cout<<"Not Palindrome";
}
else
{
return true;
}
}
}
int countPalindromes(string s) {
int n= s.length();
int counter=0;
for(int i = 0; i<n ; i++)
{
for(int j=1; j< n -i ; j++)
{
if(isPalindrome(s.substr(i,j)=true))
{
counter+=1;
}
}
}
return counter;
}
int main() {
cout<<countPalindromes("ABA");
return 0;
}
countPalindromes() 和 isPalindrome() 函数都有很多错误。
- 首先在 isPalindrome() 函数中,检查直到 r>1。您必须检查整个字符串。为此,条件将是 r>=0。只要有字符匹配,你就是 returning true。在确定位置 S[i] 的任何字符不等于 S[n-i-1](其中 n 是字符串的长度)后,您可以 return 为真。
- 其次是 countPalindromes() 函数,您在比较子字符串时传递了错误的参数。
看看你修改后的代码就明白了。
bool isPalindrome(string s) {
int x=0;
int r= s.length() -1;
while(r>=0){
if(s[x++]!=s[r--])
{
//cout<<"Not Palindrome"<<endl;
return false;
}
}
return true;
}
int countPalindromes(string s) {
int n= s.length();
int counter=0;
for(int i = 0; i<n ; i++)
{
for(int j=1; j<= n -i ; j++)
{
if(isPalindrome(s.substr(i,j))==true)
{
counter+=1;
}
}
}
return counter;
}
int main() {
cout<<countPalindromes("ABA");
return 0;
}