C语言之——左旋字符串
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
void left_str(char str[], int len, int steps)
{assert(str);assert(len > 0);steps %= len;while (steps-- > 0){char tmp = str[0];int i = 0;for (; i < len; i++){str[i - 1] = str[i];}str[i - 1] = tmp;}
}
int main()
{char msg[] = "abcde";left_str(msg, strlen(msg), 1);printf("%s\n", msg);system("pause");return 0;
}
方法二,.字符串的逆序,把一个字符串分成两部分,然后分别对两个字串进行逆序,最后整体逆序。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
void reveese_str(char*start,char*end)
{assert(start);assert(end);while (start < end){*start ^= *end;*end ^= *start;*start ^= *end;start++, end--;}
}
void left_str(char msg[], int len, int steps)
{assert(msg);assert(len>0);steps %= len;reveese_str(msg, msg + steps - 1);//第一部分逆序;reveese_str(msg+steps, msg+len-1);//第二部分逆序;reveese_str(msg , msg + len - 1);//整体逆序;
}
int main()
{char msg[] = "abcd1234";left_str( msg,strlen(msg),2);printf("%s\n", msg);system("pause");return 0;
}
创建一个新的字符串,将以前的字符串拷贝。这种方法虽然高效,但需要开辟新内存,所以最后将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
int is_left_str(char str[], int len, int steps)//abcabc
{assert(str);assert(len > 0);steps %= len;int new_len = 2 * len + 1;char*new_str = (char*)malloc(new_len);//分配的内存,strcpy(new_str, str);strcat(new_str, str);strncpy(str, new_str + steps, len);free(new_str);//释放内存;
}
int main()
{char msg[] = "abcd1234";is_left_str(msg, strlen(msg), 1);printf("%s\n", msg);system("pause");return 0;
}
C语言之——左旋字符串相关推荐
- C语言题目:左旋字符串.
C语言题目:左旋字符串 两种方法: 方法一原理:把第一个元素放存放到某个变量,让除了第一个的元素全部向前移动一个索引,再把变量放到数组最后一个元素 实现: 方法二原理: 先让要左旋的那几个字符逆序,再 ...
- 左旋字符串(c语言)
题目1:实现一个函数,可以左旋字符串中的k个字符. 例如: ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 法一:暴力解法,以abcdef变成bcdefa为例,写循环把a存到tmp ...
- 【C语言】实现一个函数,可以左旋字符串中的K个字符
题目说明: 要求实现一个函数,可以左旋字符串中的K个字符: 其中: ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 解法一: 解题思路: 拿到一组字符串之后,我们首先设置一个临时变 ...
- c语言字符串前加l,【C】 30_C语言中的字符串
字符串的概念 字符串是有序字符的集合 字符串是程序中的基本元素之一 C 语言中没有字符串的概念 C 语言中通过特殊的字符数组模拟字符串 C 语言中的字符串是以 '\0' 结尾的字符数组 字符串与字符数 ...
- Swift语言指南(十)--字符串与字符
原文:Swift语言指南(十)--字符串与字符 字符串是一段字符的有序集合,如"hellow,world"或"信天翁".Swift 中的字符串由 String ...
- go语言编程之字符串操作
2019独角兽企业重金招聘Python工程师标准>>> http://www.beckbi.cn/?p=288 go语言编程之字符串操作 转载于:https://my.oschina ...
- Swift3.0语言教程分割字符串与截取字符串
Swift3.0语言教程分割字符串与截取字符串 Swift3.0语言教程分割字符串 如果想要快速的创建一个数组,我们可以将字符串进行分割,分割后的内容将会生成一个数组.在NSString中有两个分割字 ...
- Swift3.0语言教程组合字符串
Swift3.0语言教程组合字符串 Swift3.0语言教程组合字符串,当开发者想要将已经存在的字符串进行组合,形成一个新的字符串,可以使用NSString中的两个方法,分别为appending(_: ...
- Swift3.0语言教程获取字符串编码与哈希地址
Swift3.0语言教程获取字符串编码与哈希地址 Swift3.0语言教程获取字符串编码与哈希地址,以下将讲解字符串中其它内容的获取方法. 1.获取字符串编码 在NSString中可以使用2个属性获取 ...
最新文章
- 【网络】HTTP基础总结
- 图解C++虚函数 虚函数表
- Linux 关闭与重启
- python双等号怎么输入_python中的星号‘*’和双星号‘**’的解说
- Mysql储存过程2:变量定义与参数传递
- html 图片防盗链,配置.htaccess文件实现图片防盗链
- python语法_算数运算+赋值运算符+比较运算符+逻辑运算符
- 【UIKit】UITableView.06
- 基于C语言EOF与getchar()的使用详解
- java取multipart_spring的multipartResolver和java后端获取的MultipartHttpServletRequest方法对比...
- javascript示例代码
- 2012-11-21nbsp;09:30nbsp;NSStr…
- MyQQ project
- 解答腾讯会议的常见新手问题
- 【Unity】射击小游戏
- PLM与ERP的区别
- 摸鱼还要提醒?用Python整个倒计时界面自觉摸鱼~
- 定量分析双花(双重支付)问题
- 解决:id you register the component correctly? For recursive components, make sure to provide the “name
- 性能测试:Loadrunner 脚本录制、设置事务、添加检查点、参数化以及添加关联
热门文章
- 广义相对论-学习记录16-第七章-史瓦西解与粒子运动1
- 【Android】多功能二维码实现思路,自动连接WI-FI
- Microsoft Visual Studio 的下载与安装
- 热电偶测温电路Multisim仿真及故障字典建立
- C练题笔记之:Leetcode-654. 最大二叉树
- php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!编辑
- 基于asp.net高考志愿填报参考信息管理系统#毕业设计
- 【中危】启用了不安全的TLS1.0、TLS1.1协议
- Python中end作用
- AES加密与解密(秘钥)