返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言实现倒置字符串的两种方法分享
  • 125
分享到

C语言实现倒置字符串的两种方法分享

C语言 倒置字符串方法C语言倒置字符串C语言 字符串 2022-11-13 14:11:45 125人浏览 薄情痞子
摘要

目录前言一、题目二、思路讲解 三、代码实现四、代码总结五、第二种方法倒置字符串六、总结 前言 今天在牛客网上刷了一道题,我感觉挺有意义的,现在我就分享给大家,并且

前言

今天在牛客网上刷了一道题,我感觉挺有意义的,现在我就分享给大家,并且告诉大家解题思路。

一、题目

事例:

输入下列字符: 

I like beijing.

输出的字符:

beijing. like I 

二、思路讲解 

1、设立一个数组存放输入的字符串

2、将其中每个单词进行逆置 得到 I ekil .gnjieb

3、再将字符串逆置  得到beijing.like I

三、代码实现

1.设立一个数组存放输入的字符串

#include <stdio.h>
 
int main()
{
    char arr[100] = { 0 };
    gets(arr);//注意没有使用scanf,因为scanf遇到空格就会停止接收输入的内容
 
    printf("%s\n",arr);
 
    return 0;
}

2、将每个单词进行逆置 

这其中需要注意几点:

1.整个语句如何结束循环

2.每个单词的起始位置和结束位置

3.内部如何实现

4. 判断语句结束,从而停止逆序

语句如何结束循环:

    char* t = arr;//将字符数组首元素的地址放入指针变量t中
    while (*t!='\0') {  
//判断当*t指向'\0'时循环结束。
}

每个单词的起始位置和结束位置 :

char* t = arr;//将字符数组首元素的地址放入指针变量t中
    while (*t!='\0') {  //判断当*t指向'\0'时循环结束。
        char* start = t;
        char* end = t;
          //当末指针指向空格,并且指向‘\0'循环结束。
        while (*end != ' '&&*end != '\0') {
            end++;
        }

内部怎么实现:

我们需要再自己定义一个函数reverse,用来实现字符串的交换

void reverse(char* left, char* right) {
    while (left < right) {//只有当左边的地址小于右边的地址时,才交换,中间的不需要交换
        char tmp = *right;
        *right = *left;
        *left = tmp;
        left++;
        right--;
    }
}

再调用这个函数:

int main() {
    char arr[100] = { 0 };
    gets(arr); //输入字符数组
    char* t = arr;//将字符数组首元素的地址放入指针变量t中
    while (*t!='\0') {  //判断当*t指向'\0'时循环结束。
        char* start = t;
        char* end = t;
          //当末指针指向空格,并且指向‘\0'循环结束。
        while (*end != ' '&&*end != '\0') {
            end++;
        }
        reverse(start, end - 1);
    }

怎样判断语句结束呢,从而停止逆序呢

if (*end != '\0')//判断是否到了字符串末尾
            t = end + 1;//让指针p指向下一个单词,让循环进入下一个单词
        else
            t = end;

3、将字符串逆置

这个要用到计算字符串长度的strlen函数,

int len = strlen(arr);

再调用reverse函数:

reverse(arr, arr + len - 1);

四、代码总结

void reverse(char* left, char* right) {
    while (left < right) {
        char tmp = *right;
        *right = *left;
        *left = tmp;
        left++;
        right--;
    }
}
int main() {
    char arr[100] = { 0 };
    gets(arr); //输入字符数组
    char* t = arr;//将字符数组首元素的地址放入指针变量t中
    while (*t!='\0') {  //判断当*t指向'\0'时循环结束。
        char* start = t;
        char* end = t;
          //当末指针指向空格,并且指向‘\0'循环结束。
        while (*end != ' '&&*end != '\0') {
            end++;
        }
        reverse(start, end - 1);
        if (*end != '\0')//判断是否到了字符串末尾
            t = end + 1;//让指针p指向下一个单词,让循环进入下一个单词
        else
            t = end;
    }
    int len = strlen(arr);
    reverse(arr, arr + len - 1);
    printf("%s\n", arr);
    return 0;
}

五、第二种方法倒置字符串

方法二的思路是这样先用t指向字符串的末尾,然后往前走,找到空格时,printf一下,以%s格式,这样打印只需要给字符串的首地址,它打印到\0停下。我们打印完一个单词后,把t的位置变成\0,然后继续往前走,直到数组开始位置。

t指针开始指向字符串最后一个字符,然后往前遍历,直到空格或者t到了最开始的字符位置,这里分两种情况,到空格位置,要把空格位置变成\0,打印cur+1位置,到首字符,打印cur位置。

其中需要注意一点,我们把空格位置变成了\0,所以在第一种情况需要打印的时候在加个空格

代码如下: 

int main()
{
    char arr[100] = { 0 };
    gets(arr);
    char* t = arr + strlen(arr) - 1;  //将t指针指向字符串最后一个字符
    while (t > arr)    //当t指针的地址大于arr首元素地址开始循环
    {
        while (*t != ' ' && t > arr)  //当t不为空格时,t指针往前循环指向
        {
            t--;
        }
 
        if (t == arr)
        {
            printf("%s", t);
        }
        else //到空格,打印t+1位置
        {
            printf("%s ", t + 1);
            *t = '\0';   //把空格位置变成‘\0'
        }
    }
    return 0;
}

六、总结 

今天的分享就到这了,第一种方法用数组,字符串逆置,容易想到,第二种方法,思路难,代码简单,两种方法都可以,今天的分享就到这了,谢谢大家的支持。

到此这篇关于C语言实现倒置字符串的两种方法分享的文章就介绍到这了,更多相关C语言倒置字符串内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言实现倒置字符串的两种方法分享

本文链接: https://lsjlt.com/news/172195.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C语言实现倒置字符串的两种方法分享
    目录前言一、题目二、思路讲解 三、代码实现四、代码总结五、第二种方法倒置字符串六、总结 前言 今天在牛客网上刷了一道题,我感觉挺有意义的,现在我就分享给大家,并且...
    99+
    2022-11-13
    C语言 倒置字符串方法 C语言倒置字符串 C语言 字符串
  • C语言字符串左旋的两种实现方法
    目录题目内容:方法一:方法2:三步翻转法补充:C语言--左旋字符串中的k个字符总结题目内容: 实现一个函数,可以左旋字符串中的k个字符。 例如: ABCD左旋一个字符得到BCDA。 ...
    99+
    2023-02-06
    c语言字符串左移 左旋转字符串 c语言字符串左旋
  • C++实现字符串切割的两种方法
    目录字符串切割的两种方法1、通过stl实现2、通过使用strtok()函数实现字符串分割&类型转换(string->double)字符串切割的两种方法 字符串切割的使用...
    99+
    2024-04-02
  • C语言中字符串的两种定义方式详解
    目录方式1方式2总结我们知道C语言中是没有字符串这种数据类型的,我们只能依靠数组进行存储,即字符数组,而我们定义并且初始化数组有两种方式。下面将给大家介绍这两种方式并且介绍这两种方式...
    99+
    2024-04-02
  • C语言实现短字符串压缩的三种方法详解
    目录前言一、通用算法的短字符压缩二、短字符串压缩(1)Smaz(2)Shoco(3)Unisox2三、总结前言 上一篇探索了LZ4的压缩和解压性能,以及对LZ4和ZSTD的压缩、解压...
    99+
    2022-11-13
    C语言短字符串压缩 C语言 字符串压缩
  • C语言倒置字符串问题怎么解决
    这篇文章主要介绍“C语言倒置字符串问题怎么解决”,在日常操作中,相信很多人在C语言倒置字符串问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言倒置字符串问题怎么解决”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-05
  • C语言实现猜数字游戏的两种方法
    目录前言一、游戏描述二、代码实现1.生成游戏菜单2.构建主函数 3.构建游戏函数 三、二分法实现猜数前言 猜数字小游戏是我们大多数人学习C语言时都会了解到的一个有...
    99+
    2024-04-02
  • C语言中栈的两种实现方法
    栈的两种实现方式 通常情况下,栈的实现方式有两种,一种方法是使用指针,而另一种方法则是使用数组。但是在调用程序时,我们没有必要知道具体使用了哪种方法。 一、顺序栈 #inclu...
    99+
    2024-04-02
  • C语言多种获取字符串长度的方法
    在C语言中,想要获取字符串长度可以有很多方法,下面分别介绍 一、使用sizeof()运算符 在C语言中,sizeof() 是长度的运算符,括号中可以放入数据类型或者表达式,一般我们用...
    99+
    2024-04-02
  • c语言连接两个字符串的方法是什么
    在C语言中,连接两个字符串的方法有以下几种:1. 使用strcat函数:strcat函数可以将第二个字符串追加到第一个字符串的末尾。...
    99+
    2023-08-15
    c语言
  • C语言字符串实例分析
    本篇内容主要讲解“C语言字符串实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言字符串实例分析”吧!看下面这个我们熟知的也是最先学习的代码"Hello world!"...
    99+
    2023-06-29
  • C语言实现字符串字符反向排列的方法详解
    目录前言非递归方法1.循环实现2.函数实现递归方法1.递归方法2.递归方法小结前言 重点的话说在前头,注意不是逆序打印 今天写题,碰到一个很好的题,在这里来个大家做个分享,我会用多种...
    99+
    2024-04-02
  • C语言多种方法实现一个函数左旋字符串中K个字符
    目录前言法一、将左旋1次这个动作执行k次法二、多次逆序字符串前言 今天看到一个有趣的笔试题:实现一个函数,可以左旋字符串中的k个字符。示例如下: ABCD左旋一个字符得到BCDA A...
    99+
    2024-04-02
  • Go语言中高效的字符串拼接方法分享
    Go语言是一门开源编程语言,由Google开发,具有高性能和简洁的特点。在Go语言中,字符串拼接是一项常见的操作。本文将分享一些高效的字符串拼接方法,帮助Go语言开发者提高代码的性能和...
    99+
    2024-03-12
    字符串 高效 拼接 go语言
  • C语言实现猜数字游戏的两种方法分别是什么
    C语言实现猜数字游戏的两种方法分别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言猜数字小游戏是我们大多数人学习C语言时都会了解到的一个有趣的C语言小游戏,下面我将详细...
    99+
    2023-06-26
  • C语言实现计算器的两种方法
    本文实例为大家分享了C语言实现计算器的具体代码,供大家参考,具体内容如下 C语言计算器两种方法 //一般做法 #include<stdio.h> #include<...
    99+
    2024-04-02
  • c语言求两个字符串的交集
    目录一、main()函数二、fun1()函数三、fun2()函数 注意;总结求两个字符串的交集,看似简单,实则需要考虑的细节很多。 我的思路: 1.将两个字符串简化,将里面...
    99+
    2024-04-02
  • Java实现生成JSON字符串的三种方式分享
    目录手动拼接(不推荐)使用 Gson 等 JSON 库使用 JSONObject(推荐)我的安卓开发经历始于一个原生安卓项目开发。后来由于公司有个项目与几家医疗设备公司合作,需要我写...
    99+
    2023-05-19
    Java生成JSON字符串方式 Java生成JSON字符串 Java JSON字符串
  • c语言查找字符串指定字符的方法
    小编给大家分享一下c语言查找字符串指定字符的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方式编译、处理低级存储器...
    99+
    2023-06-14
  • Shell中实现字符串反转方法分享
    在做关键词清洗过程中,需要将一类不符合某个字结尾的词过滤出来,思路是把这一批词按最后一个字排序,于是想到了先把这些词反转一下,如把12345转为54321,好像以前在夜息的文章里看过用shell可以实现,就...
    99+
    2022-06-04
    字符串 方法 Shell
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作