字符串反转

本文介绍如何通过C语言实现字符串的反转及部分字符的左移操作,包括详细的代码实现过程及其时间复杂度分析。此外,还提供了一个更复杂的字符串翻转示例,即按单词翻转字符串的同时保持空格位置不变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

把“abcdef”反转为“defabc”

1.首先,定义一个字符串的指针,字符串的长度,然后进行移位;

2.再 写一个区调用上面的移位函数,然后进行反转

代码:

#include<stdio.h>
void LeftShiftone(char *s,int n)
{
char t = s[0];
for(int i=1;i<n;i++)
s[i-1] = s[i];
s[n-1] = t;
}


void leftRotate(char *s,int n,int m)
{
while(m--)
{
LeftShiftone(s,n);
}
}


int main()
{
char str[]="abcdef";
int n = sizeof(str)-1;
printf("%d\n",sizeof(str));
//printf("%d\n",n);
leftRotate(str,n,3);
printf("%s\n",str);
return 0;
}


时间复杂度为:O(nm);


我们常常会见到这样的题目:

写一个函数,将字符串翻转,翻转方式如下:“I am a student”反转成“student a am I”,不借助任何库函数。

#include <stdio.h>  
#include<string.h> 
void ReverseString(char *s,int from,int to)  
{  
    char t;  
    while(from<to)  
    {  
        t=s[from];  
        s[from++]=s[to];  
        s[to--]=t;  
    }  
}  
int main()  
{  
   char str[100];  
    int l,i,from,to;  
    printf("Enter a String: ");  
    gets(str);  
    l=strlen(str);  
    ReverseString(str,0,l-1);  
    printf("\n总体翻转:%s\n",str);  
    i=0;  
    while(str[i])  
    {  
        if(str[i]!=' ')  
        {  
            from=i;  
            while(str[i]&&str[i]!=' ')  
            {  
                i++;  
            }  
            i=i-1;  
            to=i;  
        }  
        char t;  
        while(from<to)  
        {  
            t=str[from];  
            str[from++]=str[to];  
            str[to--]=t;  
        }  
        i++;  
    }  
    printf("\nString:%s\n",str);  
    return 0;  
}  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值