字符串回文在String.size()上给出错误答案,但在String.seize()-1上给出正确答案



这是一个程序,它可以找到用户输入的字符串的反面,并判断它是否是回文。。。。现在的问题是,当我用size((-1初始化for循环时,它正确地反转了字符串……但当我用size((初始化时,它错过了一个字符。为什么会这样?

  //palindromee
  #include <iostream>
  using namespace std;
  int main()
  {
   string s;
   string s1;
   cout<<"Enter something:  ";
   cin>>s;
   s1.assign(s);
   int k=0;
   for(int i = s.size()-1  ; i>=0 ; i--)
           //why correct ans reversing on size()-1?
   {       // and wrong ans on size()
        s1[k]=s[i];
        k++;
   }
    cout<<"string s= "<<s;
    cout<<"nstring s1= "<<s1<<'n';
    int checker=s.compare(s1);
    if(checker == 0)
    {
        cout<<"nnpalindrome";
    }
    else cout<<"n NOT A PALINDROME";
   return 0;

}

这是因为在c&c++数组索引是基于0的。字符串类也是如此,其中使用[]运算符访问单个字符的索引是基于0的。数组的长度(或字符串的大小(总是在其边界之外。

最新更新