字符串逆序

简介: 字符串逆序

[编程题]字符逆序(来自牛客网)


题目:将一个字符串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;
}

代码解释

目录
相关文章
字符串逆序(递归实现)
字符串逆序(递归实现)
87 0
|
10月前
|
C语言
递归实现字符串逆序输出(c语言)
递归实现字符串逆序输出(c语言)
116 0
|
11月前
|
存储 算法 C语言
【C语言刷题】猜名次、猜凶手、杨辉三角、杨氏矩阵、字符串左旋、判断是否为左旋子串
【C语言刷题】猜名次、猜凶手、杨辉三角、杨氏矩阵、字符串左旋、判断是否为左旋子串
73 0
逆置字符串
逆置字符串
60 0
杨氏矩阵,字符串左旋,字符串旋转结果题目解析
杨氏矩阵,字符串左旋,字符串旋转结果题目解析
|
C语言
字符串逆序(C语言版 函数,递归方法)
字符串逆序(C语言版 函数,递归方法)
123 0
字符串逆序(C语言版 函数,递归方法)
|
算法 前端开发 API
字符串看到 ”回文“ 尝试双指针
字符串看到 ”回文“ 尝试双指针
61 0
字符串逆序(递归和非递归实现)
给连两个指针,left放在字符串左侧,right放在最后一个有效字符位置。 交换两个指针位置上的字符
字符串逆序(递归实现)——C语言
字符串逆序(递归实现)——C语言
字符串逆序(递归实现)——C语言
|
C语言 Windows
C语言 - 递归实现字符串逆序打印
C语言 - 递归实现字符串逆序打印
154 0
C语言 - 递归实现字符串逆序打印