C语言字符串左旋

2024-04-11 02:36
文章标签 语言 字符串 左旋

本文主要是介绍C语言字符串左旋,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、前言

在这里插入图片描述
这个题目的完整题目是这样子的。

二、我们实现这个编程的思路

2.1暴力破解思想

假如有一个数组里面的字符串为”abcdef“,我们这时候就这样先将字符”a“移到最后再将其余的字符前移。

2.2三步移动法

同样我们还是假设一个数组里面存的是字符串”abcdef“,将数组可以划分成2个部分,一个是我们要进行移动的数组即”ab“,宁外一个部分就是”cdef“,我们可以将ab进行逆序,然后实现cdef逆序,最后整体逆序,就能得到我们想要的效果

三、代码实现

3.1暴力破解实现

#include<stdio.h>
#include<assert.h>
#include<string.h>
void left_move(char* arr, int k)
{//进行一次调换assert(arr!=NULL);int len = strlen(arr);int i, j;for (i = 0; i < k; i++){char tmp = *arr;for (j=0;j<len-1;j++){*(arr + j) = *(arr + j + 1);}*(arr + len-1 ) = tmp;}
}
int main()
{char arr[] = "abcdef";left_move(arr, 2);printf("%s\n", arr);return 0;
}

这个代码注意我们是使用变量tmp接收,我之前写代码的时候是使用指针tmp接收,并不能得到我们的效果。使用指针的话,它仅仅表示指向首元素,而我们的首元素的改变直接会改变我们tmp,而这里我们使用变量就不会出现这个问题,使用变量它开创一片空间能再里面存字符。

3.2三步交换法代码

#include<stdio.h>
#include<assert.h>
#include<string.h>
void my_reverse(char* left, char* right)
{assert(left != NULL);assert(right != NULL);while (left < right){char tmp = *left;*left = *right;*right = tmp;left++;right--;}
}
void left_move(char* arr, int k)
{int len = strlen(arr);my_reverse(arr, arr + k - 1);//字符串左旁的倒序my_reverse(arr + k, arr + len - 1);//字符串右旁的倒序my_reverse(arr, arr + len - 1);//整个字符串的倒序
}int main()
{char arr[] = "abcdef";left_move(arr, 2);printf("%s\n", arr);return 0;
}

这个代码中的while循环条件能直接用指针,是因为指针指向的本身就是地址,再通过自增和自减我们就能实现字符串的倒序排列

四、结语

希望大家指出不足

这篇关于C语言字符串左旋的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/892851

相关文章

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

MySQL更新某个字段拼接固定字符串的实现

《MySQL更新某个字段拼接固定字符串的实现》在MySQL中,我们经常需要对数据库中的某个字段进行更新操作,本文就来介绍一下MySQL更新某个字段拼接固定字符串的实现,感兴趣的可以了解一下... 目录1. 查看字段当前值2. 更新字段拼接固定字符串3. 验证更新结果mysql更新某个字段拼接固定字符串 -

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换