字符串按单词(term)反转(C代码)
来源:互联网 发布:乌鲁木齐软件开发公司 编辑:程序博客网 时间:2024/06/09 20:56
有一个英文句子,每个单词(term)之间用空格分隔,例如:I like English very much 要求反转后变为 much very English like I
上面的问题可以利用C语言中字符串已'\0'结尾,且'\0'是字符串打印的截止符,代码如下:(这只是打印出反转的字符串,而不是针对原串反转)
#include <stdio.h>#include <string.h>void reverse(char *s){int len = strlen(s);int i;for(int i = len; i >=0 ; i --){if(s[i] == ' '){s[i] = '\0';printf("%s ", s + i + 1);}}printf("%s\n", s);}
如果只是打印还可以使用栈,从字符串的末尾进行遍历,遇到空格后将栈中的元素全部pop,直到字符串从尾到头遍历完成。
以上都是打印按term反转的字符串,如果是改变原来的字符串呢?
可以这样考虑,先将字符串整体反转,然后从头遍历,当遇到空格时将这个term再次进行反转,到末尾时整个字符串反转完毕。
/************************************************************************* > File Name: reverse_term.c > Author: desionwang > Mail: wdxin1322@qq.com > Created Time: Thu 14 Nov 2013 09:55:17 AM CST ************************************************************************/#include<stdio.h>#include<string.h>int reverse(char *str, int l, int h){ if(str == NULL){ return -1; } while(l <= h){ char tem = str[l]; str[l] = str[h]; str[h] = tem; l++; h--; } return 0;}int reverse_term(char *str, int l, int h){ reverse(str, l, h); int s = 0, e = 0; char *p = str; while(*p != '\0'){ if(*p == ' '){ reverse(str, s, e-1); s = e + 1; } p++; e++; }}int main(int argc, char *argv[]){ char *str = argv[1]; int len = strlen(str); reverse_term(str, 0, len-1); printf("%s\n", str);}
- 字符串按单词(term)反转(C代码)
- 求职面试(字符串反转,单词反转)
- 按单词反转字符串
- 按单词反转字符串
- 按单词反转字符串
- 按单词反转字符串
- 按单词反转字符串
- 按单词反转字符串
- C语言——例程:按单词反转字符串
- c语言——按单词反转字符串
- 字符串反转,单词反转
- LeetCode按单词反转字符串
- Easy:字符串按单词反转
- java字符串反转,逆序输出(句子反转,单词不反转)
- 单词反转(举一反三)
- C语言来实现字符串反转(只有单词反转,单词里的字母不反转)
- C语言来实现字符串反转 只有单词顺序反转,单词里的字母不反转
- 笔试题-反转字符串和按单词反转字符串
- C++ goto语句的理解与应用
- SpringMVC配置,简单实例,文件上传与下载,ajax请求
- 单片机之IIC--AT24C256 多页读写关键程序段
- Excel中怎样用HYPERLINK函数设置连接
- 设计模式 - 工厂方法模式
- 字符串按单词(term)反转(C代码)
- Hibernate各种映射类型
- C#中使用WebBrowser显示嵌入资源
- Java.Web - Response、Request 随笔
- 拥抱大APP时代的到来-2013年5月江西IDC排行榜与综述(含汪照发先生专访)
- 我来啦嘻嘻
- 关于模型层编码
- MFC消息循环
- 开发者需知的10类工具