使用>> 的字符串读取(缺省)会被空格所终止;也就是它只能读取一个单词。
指针问题
不要用空指针进行数据访问:
int* p = nullptr;
*p = 7; // 糟糕
回文
回文是一种单词,它顺序拼写和逆序拼写的结果是相同的。
例如:anna petep malayalam
有两种方法判断一个单词是否是回文:
获得单词逆序拼写的副本,并将其与原单词进行比较。
判断单词的首字符与尾字符是否相同,然后判断第二个字符与倒数第二个字符是否相同,继续比较下去
直到到达单词的中央。
使用string实现回文
bool is_palindrome(const string& s)
{
int first = 0; //首字符索引
int last = s.length() - 1; //尾字符索引
while(first < last)
{
if (s[first] != s[last]) return false;
++first; //向前移动
--last; //向后移动
}
return true;
}
使用数组实现回文
bool is_palindrome(const char s[], int n)
{
int first = 0; //首字符索引
int last = n - 1; //尾字符索引
while(first < last)
{
if (s[first] != s[last]) return false;
++first; //向前移动
--last; //向后移动
}
return true;
}
使用指针实现回文
bool is_palindrome(const char* first, const char* last)
{
while(first < last)
{
if (*first != *last) return false;
++first; //向前移动
--last; //向后移动
}
return true;
}