• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C语言左旋转字符串与翻转字符串中单词顺序的方法

C语言左旋转字符串与翻转字符串中单词顺序的方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c语言字符串,c语言字符串定义,c语言字符串函数,c语言字符串比较,c语言字符串长度等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

左旋转字符串
题目:

定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。

如把字符串 abcdef  左旋转 2  位得到字符串 cdefab。请实现字符串左旋转的函数。

要求时间对长度为 n  的字符串操作的复杂度为 O(n),辅助内存为 O(1)。

分析:

网上看到解法很多种,就不详细说明了。

我采用的是数组不对称的交换时间复杂度应该是O(n)。

代码实现(GCC编译通过):

#include "stdio.h"
#include "stdlib.h"
 
void reverse_str(char str[],int n,int m);
 
int main(void)
{
  char str[] = "abcdef";
  reverse_str(str,6,2);
  return 0;
}
 
//str为字符串数组,n为数组长度,m为左移位数
void reverse_str(char str[],int n,int m)
{
  int i,j;
  char tmp; 
     
  for(i=0,j=n-1;i<j;i++,j--)
  {
    tmp = str[i];
    str[i] = str[j];
    str[j] = tmp;
  }
 
  for(i=0,j=n-m-1;i<j;i++,j--)
  {
    tmp = str[i];
    str[i] = str[j];
    str[j] = tmp;
  }
 
  for(i=n-m,j=n-1;i<j;i++,j--)
  {
    tmp = str[i];
    str[i] = str[j];
    str[j] = tmp;
  }
 
  printf("%s\n",str);
}

</div>


翻转句子中单词顺序
翻转句子中单词的顺序。

题目:

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。

句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。

例如输入“I am a student.”,则输出“student. a am I”。

这个题比较简单,直接上代码了(GCC编译通过)

代码实现:

#include "stdio.h"
#include "stdlib.h"
 
void helper(char a[],int n);
 
int main(void)
{
  char str[15] = "I am a student!";
  helper(str,15);
  printf("\n");
  return 0;
}
 
void helper(char a[],int n)
{
  int e = n-1;
  int i,j,t;
   
  for(i=e;i>=0;i=j-1)
  {
    for(j=i;j>=0 && a[j]!=' ' ;--j);
    t=j+1;
    while(t<=i)
      printf("%c",a[t++]);
    if(j<0)
      return;
    else  
      printf(" ");
  }
}

</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C语言中函数返回字符串的方法汇总
  • C语言 字符串首字母转换成大写简单实例
  • c语言 数据结构实现之字符串
  • C语言之实现字符串小写变大写的实例
  • c语言将字符串中的小写字母转换成大写字母
  • C语言中时间戳转换成时间字符串的方法
  • 详解C语言中的字符串拼接(堆与栈)
  • C语言实现返回字符串函数的四种方法
  • 浅谈C语言之字符串处理函数
  • C语言解字符串逆序和单向链表逆序问题的代码示例

相关文章

  • 2017-05-28C语言运算符优先级列表(超详细)
  • 2017-05-28C语言中system()函数的用法总结
  • 2022-04-30C语言fopen函数的用法,C语言打开文件详解
  • 2017-05-28C语言格式化输入输出函数详解
  • 2017-05-28C语言中的链接编写教程
  • 2017-05-28C++表达式new与delete知识详解
  • 2017-05-28C语言调试手段:锁定错误的实现方法
  • 2017-05-28C语言中判断int,long型等变量是否赋值的方法详解
  • 2017-05-28dword ptr指令详细解析
  • 2017-05-28C++ 中const 类型限定符不兼容问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++中可以接受任意多个参数的函数定义方法(详解)
    • 《Objective-C高级编程》干货三部曲(一):引用计数篇
    • 封装常用正则表达式的用法
    • 冒泡算法的改进具体实现
    • C语言 枚举类型(Enum)详解及示例代码
    • C++基础教程之指针拷贝详解
    • 使用C语言判断栈的方向实例
    • C++设计类不能被继承的方法实例讲解
    • 基于C中一个行压缩图的简单实现代码
    • 简单谈谈C++ 中指针与引用

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有