单词倒排(C语言详解)

这篇具有很好参考价值的文章主要介绍了单词倒排(C语言详解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目:单词倒排

描述:对字符串中的所有单词进行倒排。

说明:

1、构成单词的字符只有26个大写或小写英文字母;

2、非构成单词的字符均视为单词间隔符;

3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;

4、每个单词最长20个字母

数据范围:字符串长度满足  1≤n≤10000;

输入描述:

输入一行,表示用来倒排的句子

输出描述:

输出句子的倒排结果

示例一:

输入:I am a student

输出:student a am I

示例二:

输入:$bo*y gi!r#l

输出:l r gi y bo

解题思路:

1,整体思想是双指针法,定义一对快慢指针 fast,slow;

2,找字母尾部:首先让 fast 指向数组的尾元素,然后找到从后向前找字母的尾部,当 arr[fast] 不是字母时 fast--,直到指向字母,而后令 slow = fast ,此时 slow 指向字母尾部;

3,找字母头部:arr[fast] 是字母时 fast--,直到指向非字母,然后打印 arr[fast+1] arr[slow] 之间的值即可,后面加上分隔符;

思路实现:

先输入字符串因为带有空格,所以 scanf 不好使,使用 gets ,运用字符串函数 strlen 算出数组实际个数,随后定义双指针 fastslow 并将其赋值;

#include<string.h>
int main() {
    char arr[10001]={0};
    gets(arr);
    int len=strlen(arr);
    int fast=len-1;
    int slow=0;

fast=len-1,从后往前开始遍历数组,并打印;

找字母尾部:首先让 fast 指向数组的尾元素,然后找到从后向前找字母的尾部,当 arr[fast] 不是字母时 fast--,直到指向字母,而后令 slow = fast ,此时 slow 指向字母尾部;

 while(fast>=0 && !isalpha(arr[fast]))
        {
            fast--;
        }
        slow=fast;

找字母头部:arr[fast] 是字母时 fast--,直到指向非字母,然后打印 arr[fast+1] arr[slow] 之间的值即可,后面加上分隔符,并且打印;

   while(fast>=0 && isalpha(arr[fast]))
        {
            fast--;
        }
        int i=0;
        for(i=fast+1;i<=slow;i++)
        {
            printf("%c",arr[i]);
        }
        printf(" ");

以上就是这道题的解析,一下是程序源代码:文章来源地址https://www.toymoban.com/news/detail-658481.html

#include <stdio.h>
#include<string.h>
int main() {
    char arr[10001]={0};
    gets(arr);
    int len=strlen(arr);
    int fast=len-1;
    int slow=0;
    while(fast>=0)
    {
        while(fast>=0 && !isalpha(arr[fast]))
        {
            fast--;
        }
        slow=fast;
        while(fast>=0 && isalpha(arr[fast]))
        {
            fast--;
        }
        int i=0;
        for(i=fast+1;i<=slow;i++)
        {
            printf("%c",arr[i]);
        }
        printf(" ");
    }
    return 0;
}

如有不足之处欢迎来补充交流!

完结。。。

到了这里,关于单词倒排(C语言详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据 | 实验二:文档倒排索引算法实现

    倒排索引(Inverted Index)被用来存储 在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射 ,是目前几乎所有支持全文索引的搜索引擎都需要依赖的一个数据结构。通过对倒排索引的编程实现,熟练掌握 MapReduce 程序在集群上的提交与执行过程,加深对 MapReduc

    2024年02月07日
    浏览(28)
  • 【Golang系统开发】搜索引擎(3) 压缩倒排索引表

    假设我们的数据集中有 800000 篇文章,每篇文章有 200 词条,每个词条有6个字符,倒排记录数目是 1 亿。那么如果我们倒排索引表中单单记录文档id,不记录文档内的频率和偏移信息。 那么 文档id 的长度就必须是 l o g 2 800000 = 20 b i t log_2800000=20 bit l o g 2 ​ 800000 = 20 bi t (文档

    2024年02月12日
    浏览(46)
  • Elasticsearch分词详解:ES分词介绍、倒排索引介绍、分词器的作用、停用词

    详见:https://blog.csdn.net/weixin_40612128/article/details/123476053

    2024年02月12日
    浏览(51)
  • C语言——大头记单词

    归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝 每一发奋努力的背后,必有加倍的赏赐! 一起加油! 题目描述 大头的词汇量很小,所以每次做英语选择题的时候都很头

    2024年01月19日
    浏览(21)
  • oepnJudge | 最长单词2 C语言

    总时间限制: 1000ms 内存限制: 65536kB 一个以’.\\\'结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式,求句子中的最长单词。 一个以’.\\\'结尾的简单英文句子(长度不超过500),单词之间用空格分隔,没有缩写形式和其它特殊形式。 该句子中最长的单词。

    2024年02月21日
    浏览(19)
  • C语言----------最后一个单词的大小

    1.计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾) (1)这里主要是遍历数组,而且这个字符数组应该从后向前进行遍历; (2)srelen需要包含头文件,因为字符串的最后是斜杠0,所以i的初始值是len-1,依次从后向前

    2024年02月21日
    浏览(31)
  • 面试算法108:单词演变

    输入两个长度相同但内容不同的单词(beginWord和endWord)和一个单词列表,求从beginWord到endWord的演变序列的最短长度,要求每步只能改变单词中的一个字母,并且演变过程中每步得到的单词都必须在给定的单词列表中。如果不能从beginWord演变到endWord,则返回0。假设所有单词只

    2024年02月01日
    浏览(40)
  • C语言实现背单词软件(系统级别)

    目录 一、软件需求说明书 1 引言  2 任务概述   二、可行性研究报告  1 编写目的  2 所建议的系统(技术可行性)  3 使用方面的可行性  4 结论  三、系统设计说明书   1.面向对象设计 1.1前提说明  1.2 系统设计 2.面向对象建模   四.界面设计 五、测试计划   1.编写目

    2024年02月06日
    浏览(37)
  • 算法-图BFS/DFS-单词接龙

    https://leetcode-cn.com/problems/number-of-islands 给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则: 每次转换只能改变一个字母。 转换过程中的中间单词必须是字典中的单词。 说明: 如果不存在这样的转换序列,返回

    2024年02月10日
    浏览(40)
  • BF算法详解(C语言实现)

    本文主要介绍了BF算法的主要思想、具体流程、C语言代码实现以及自己对该算法的一些感悟 ps:第一次写博客,如有不妥之地,还望各位大佬指正。 BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法。 其主要思想为将目标串S(以下简称S)和模式串T(以下简称T)里的

    2023年04月19日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包