我有一个char *s="abcdefg"
然后有char *w;
问题要求我不能用字符数组,只能用指针,让printf("%s",w)的结果是gfedcba也就是回文。求教啊,不会啊!
所谓回文数组,就是从高到底和从低到高遍历,得到的是相同序列。该数组具有对称性。
如果一个数组不是回文数组,可以把对称位置上值不相等的元素修改为相等,来生成回文数组。
用指针可以按照如下思路:
1 定义两个指针head和end,head指向数组头,end指向数组尾。
2 比较两个指针指向的值,如果不相等,则令其相等。
3 移动指针,head向后,end向前,即两头向中间凑。
4 重复执行2-3步,直到两个指针相等或者end在head前(end <= head),结束循环。
5 得到的数组即为回文数组。
参考代码如下:
#include <stdio.h>执行后的结果为:
1 2 4 2 1
已经是回文数组了。