首页 >> 大全

C语言实现字符串倒置

2023-07-27 大全 33 作者:考证青年

前言

在实现功能之前,要先向大家具体描述一下字符串倒置的内容。假设有一话内容为"I like .“,要求单词倒置,标点不倒置, 即倒置之后就变成“. like I”。

思路解析

这道题目思路正确的话就不算太难,相比于字符串逆序,这道题相当于逆序两次,第一次倒序把整个字符串的内容逆序到一个正确的位置,后面的倒序对每个单词逆序。大意如图:

本质上第一次倒序和后面几次的倒序没有什么区别,我们可以用只用一个函数来实现所有的倒序过程,问题在于后面几次倒序要确定要倒序的内容?

在整个句子中可以利用空格来确定要倒序的单词长度,注意在倒序最后一个单词时判断条件应该\0。

代码实现

解决上述问题后,整个代码还是比较简单的,源码如下:

void change(char* arr, int le, int ri)
{char* left = arr + le;char* right = arr + ri;while (left < right){char tmp = *right;*right = *left;*left = tmp;left++;right--;}
}
int main()
{char arr[100] = { 0 };gets(arr);//使用scanf//scanf("%[^\n]", arr);int le = 0;int ri = strlen(arr) - 1;change(arr, le, ri);int count = 0;char* p = arr;while (count < ri){   int dian = count;while (*(p + count) != ' ' && *(p + count) != '\0'){count++;}change(arr, dian,count-1);count++;}printf("%s\n", arr);return 0;
}

需要注意的是:第一,scanf读取到空格就会停止,因此这里用gets,当然真的想用scanf也不是不行,只是要稍作改变了,具体请看上方注释。

第二,在后续的循环判断中,我们是先判断在计数,这就会导致空格被我们倒置到单词的前面,因为在传参是要减一。

以上,就是整道题的思路了,觉得还可以的朋友点个赞吧qaq

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了