返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言如何实现翻转字符串中的单词
  • 609
分享到

C语言如何实现翻转字符串中的单词

2024-04-02 19:04:59 609人浏览 泡泡鱼
摘要

目录C语言翻转字符串中的单词另外开辟一个空间,来存放翻转的字符串直接在原数组上进行操作C语言字符串各单词的反转思路代码实现代码编译调试输出C语言翻转字符串中的单词 另外开辟一个空间,

C语言翻转字符串中的单词

另外开辟一个空间,来存放翻转的字符串

单词之间是以空格间隔的,所以我们翻转需要一个一个字符进行翻转,我们需要找寻空格,找到空格表示一个字符已经找到,进行以下的步骤:

1. 首先获取原字符串的长度,申请一个长度+1的空间,因为还需要一个结束符。

2. 定义一个变量i,初始化为0,用i进行字符串的遍历,定义一个start用来表示每个单词的起始位置。

3. 遍历字符串,不是空格i++,直到遇见空格,表示找到了一个单词。

4. 将该单词从末尾放到咱们新开辟的数组中,就实现了逆序。

5. 空格也需要放到临时数组中保持与原数组一致。

#include<stdio.h>
#include<string.h>
char * reverseWords(char * s);
int main(){
    char s[] = "Let's pass the examination";
    char *temp = reverseWords(s);
    printf("%s",temp);
    return 0;
} 
char * reverseWords(char * s){
    // 获取该字符串长度 
    int length = strlen(s);
    // 申请新的空间 
    char* temp = (char*)malloc(sizeof(char)*(length+1));
    // 结束符\0 
    temp[length] = 0;
    int i = 0;
    while(i<length){
        // 单词的起始位置 
        int start = i;
        // 找寻单词,因为字符串中的单词以空格间隔 
        while(i<length&&s[i]!=' '){
            i++;
        }
        // 找到了一个单词进行交换,将后边的字符放到前边 
        for(int j=start;j<i;j++){
            // 将单词从后往前放置到新的数组中实现单词的逆序 
            temp[j] = s[start+i-1-j];
        }
        // 处理空格 
        while(i<length&&s[i]==' '){
            temp[i] = ' ';
            i++;
        }
    } 
    return temp; 
}

直接在原数组上进行操作

使用双指针进行单词的翻转,一个指向单词的开始,一个指向单词的末尾。与上述方方法几乎一致,只是交换的时候发生了一些变化。

1. 先通过空格找寻单词。

2. 然后通过双指针实现单词翻转。

3. 继续遍历字符串,空格跳过。

4. 完成整个字符串的翻转。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char * reverseWords(char * s);
int main(){
    char s[] = "Let's pass the examination";
    char *temp = reverseWords(s);
    printf("%s",temp);
    return 0;
} 
char * reverseWords(char * s){
    // 获取该字符串长度 
    int length = strlen(s);
    int i = 0;
    while(i<length){
        // 单词的起始位置 
        int start = i;
        // 找寻单词,因为字符串中的单词以空格间隔 
        while(i<length&&s[i]!=' '){
            i++;
        }
        // 双指针 
        int left = start;
        int right = i-1; 
        // 双指针法进行翻转 
        while(left<right){
            char temStr = s[left];
            s[left] = s[right];
            s[right] = temStr;
            left++;
            right--;
        }
        // 空格忽略 
        while (i<length && s[i]==' ') {
            i++;
        }
    } 
    return s; 
}

C语言字符串各单词的反转

思路

我们首先把字符串整个反转,然后在逐个单词反转回来,每个单词通过空格' '分隔开

代码实现

int strReverse(char * head, char * tail){
	if(NULL == head || NULL == tail){
		printf("strReverse param error!\n");
		return PARAM_ERR;
	}
	
	char tmp;
 
	while(head < tail){
		tmp = *head;
		*head = *tail;
		*tail = tmp;
 
		head++;
		tail--;
	}
	
	return SUCCESS;
}
 
int strReversWithoutWord (char * str){
	if(NULL == str){
		printf("strReverse param error!\n");
		return PARAM_ERR;
	}
 
	int len = 0;
	char * head = NULL, * tail = NULL;
	char * p = NULL, * q = NULL;
 
	
	len  = strlen(str);
	head = str;
	tail = str + len - 1;
	strReverse(head, tail);
	
	
	p = str;
	while(*p != '\0'){
		head = p;
		q = p;
		while(' ' != *q && '\0' != *q){
			q++;
		}
		tail = q - 1;
		strReverse(head, tail);
		
		p = q + 1;
	}
}
 
void testReverse(void){
	char str[100] = "Feng is from Beijing!";
	char * head = NULL, * tail = NULL;
	int len  = 0;
 
	printf("\n************  testReverse ************ \n");
 
	strReversWithoutWord(str);
	printf("Reverse string without word is : %s\n\n", str);
 
	return;
}

代码编译

GCc main.c str.c -g -o a.exe

调试输出

************  testReverse ************
 
Reverse string without word is : Beijing! from is Feng

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: C语言如何实现翻转字符串中的单词

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

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

猜你喜欢
  • C语言如何实现翻转字符串中的单词
    目录C语言翻转字符串中的单词另外开辟一个空间,来存放翻转的字符串直接在原数组上进行操作C语言字符串各单词的反转思路代码实现代码编译调试输出C语言翻转字符串中的单词 另外开辟一个空间,...
    99+
    2024-04-02
  • C++实现LeetCode(151.翻转字符串中的单词)
    [LeetCode] 151.Reverse Words in a String 翻转字符串中的单词 Given an input string, reverse the strin...
    99+
    2024-04-02
  • C++实现LeetCode(186.翻转字符串中的单词之二)
    [LeetCode] 186. Reverse Words in a String II 翻转字符串中的单词之二 Given an input string , rever...
    99+
    2024-04-02
  • C++实现LeetCode(557.翻转字符串中的单词之三)
    [LeetCode] 557.Reverse Words in a String III 翻转字符串中的单词之三 Given a string, you need to revers...
    99+
    2024-04-02
  • C++中如何使用LeetCode翻转字符串中的单词
    这篇文章给大家介绍C++中如何使用LeetCode翻转字符串中的单词,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。[LeetCode] 186. Reverse Words in a String II 翻转字符串中的...
    99+
    2023-06-20
  • C++中怎么利用LeetCode翻转字符串中的单词
    这篇文章将为大家详细讲解有关C++中怎么利用LeetCode翻转字符串中的单词,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。[LeetCode] 557.Reverse Words in a...
    99+
    2023-06-20
  • python3翻转字符串里的单词点的实现方法
    给定一个字符串,逐个翻转字符串中的每个单词。 说明: 无空格字符构成一个 单词 。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格...
    99+
    2024-04-02
  • c语言如何实现字符串反转
    C语言可以通过循环遍历字符串并交换字符的位置来实现字符串的反转。具体步骤如下:1. 首先,定义一个指向字符串的指针。2. 使用`st...
    99+
    2023-09-12
    c语言
  • 使用python3怎么翻转字符串中的单词点
    使用python3怎么翻转字符串中的单词点?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。给定一个字符串,逐个翻转字符串中的每个单词。说明:无空格字符构成一个 单...
    99+
    2023-06-14
  • php如何实现字符串翻转
    在php中使用strrev()函数对字符串进行翻转,具体方法如下:strrev()函数作用:php中strrev()函数的作用是用于反转一个字符串,并输出。strrev()函数语法:strrev(string)参数:string:需要反转的...
    99+
    2024-04-02
  • C语言实现统计一行字符串的单词个数
    目录问题简述解题思路程序代码测试结果问题简述 输入一行字符,统计其中有多少个单词,单词之间用空格分开 输入样例: I want to be a postgraduate. 输出样例:...
    99+
    2024-04-02
  • php如何反转单词字符串
    本文小编为大家详细介绍“php如何反转单词字符串”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何反转单词字符串”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。php反转单词字符串的方法:1、新建一个php...
    99+
    2023-07-05
  • 怎么利用python、php或c语言等实现字符串的翻转
    这篇文章主要讲解了“怎么利用python、php或c语言等实现字符串的翻转”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么利用python、php或c语言等实现字符串的翻转”吧!原题:Q:...
    99+
    2023-06-09
  • C语言中字符串反转怎么实现
    这篇文章主要介绍C语言中字符串反转怎么实现,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!代码实现#include <stdio.h>#include <string.h>#...
    99+
    2023-06-25
  • c语言字符串转数字怎么实现
    在C语言中,可以使用标准库函数atoi()和atol()来将字符串转换为整数和长整数。具体实现如下: #include <st...
    99+
    2024-03-08
    c语言
  • c语言中如何实现逆序字符串
    这篇文章主要介绍了c语言中如何实现逆序字符串,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用指针逆序字符串思路:给两个指针,left放在字符串左侧,right放在最后一个有...
    99+
    2023-06-26
  • C语言指针如何实现字符串逆序反转
    目录指针实现字符串逆序反转知识点字符串逆序的几种写法非递归写法递归写法指针实现字符串逆序反转 #include<stdio.h> #include<string.h...
    99+
    2024-04-02
  • C语言如何实现将字符串转换成整数
    本文小编为大家详细介绍“C语言如何实现将字符串转换成整数”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言如何实现将字符串转换成整数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。这是一个很有意思的问题。请不要...
    99+
    2023-07-05
  • C语言如何实现字符串替换
    在C语言中可以通过循环遍历字符串的每个字符,然后判断是否需要替换,如果需要替换则使用新的字符替换原字符。下面是一个示例代码,实现了字...
    99+
    2023-08-24
    C语言
  • c语言如何实现字符串复制
    在C语言中,可以使用strcpy()函数来实现字符串复制。具体实现方法如下: #include <stdio.h> #i...
    99+
    2024-04-09
    c语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作