[编程题]字符逆序(来自牛客网)
题目:将一个字符串str的内容颠倒过来,并输出。
数据范围:1 ≤ len(str) ≤10000
输入格式 输入一个字符串,可以有空格
输出格式 输出逆序的字符串
示例1:
输入:I am a student
输出:tneduts a ma I
示例2:
输入:nowcoder
输出:redocwon
方案一:函数+数组
代码思路
1.创建一个数组a并初始化
2.把字符串输入到该数组a
3.求该数组的长度
4.函数实现字符逆序
(1)用left 和 right 定义字符串的开始和末尾(' \0 '的前一个)
(2)使用while循环,并创建一个暂时变量,用数组交换,并实现逐步输出
代码
void reverse_string(char* a,int len) { char left = 0; char right = len - 1; while (left < right) { char temp = a[left]; a[left] = a[right]; a[right] = temp; left++; right--; } } int main() { char a[10000] = { 0 }; gets(a); int len = strlen(a); reverse_string(a, len); printf("%s\n", a); return 0; }
方案二:指针实现
代码思路
1.创建一个字符数组a并初始化
2.输入字符串到该数组a
3.求字符串长度a
4.使用指针定义该字符串最左端和最右端,同上👆再利用while循环交换再输出
代码
int main() { char a[10000] = { 0 }; gets(a); int len = strlen(a); char* left = a; char* right = a + len - 1; while (left < right) { char* temp = *left; *left = *right; *right = temp; right--; left++; } printf("%s\n", a); return 0; }
方案三:利用两个数组实现字符串的逆序(最简单)
代码
int main() { char a[10] = { 0 }; char b[10] = { 0 }; gets(a); int len = strlen(a); int i = 0; for (i = 0; i <= (len - 1); i++) { b[i] = a[len - 1 - i]; } printf("%s\n", b); return 0; }
代码解释