单词倒排(牛客)

2023-05-16

题目描述:

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

说明:

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

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

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

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

输入描述:输入一行以空格来分隔的句子(当时我没看这个输入描述,我以为非字母以外的字符全是分隔符,并且AC代码也是按照这种想法进行处理的)

I am a student

输出描述:输出句子的逆序

student a am I

做题思路:

将出现的所有非字母函数都当做分隔符进行处理。

1. 确定整个字符串有多少种分隔符

2. 按照这些分隔符对字符串进行分割,分割方法使用strtok函数,对于多种分隔符也可以完成分割任务

3. 将分割得到的子串倒序输出即可

注意事项:

1. 本题输出单词,最后一个单词后面不能有空格

2. 关于string的一些函数

string s;

k = s.find(t);
返回值是子串(t必须是一个字符串)在母串中的位置(int)
如果没有找到,那么会返回一个特别的标记npos, 即 k == s.npos 代表没有找到

char c;
s.push_back(c); 可以将c插入到s的尾部

s.c_str()  将string类型转换为const char*类型
注意:不能用char*类型接受,const char*不能完成到char*的转换

AC代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<vector>
using namespace std;

bool isFind(string s,char c); //判断字符c是否在s中存在 
string getSplitc(char *str); //获取有哪些分隔符 

int main()
{
    char str[1500];
	
    while( gets(str) ){
	string split = getSplitc(str);
		
	vector<char*> word;
	const char *s = split.c_str();
		
	char *t = strtok(str,s);
	while( t!=NULL ){
	    word.push_back(t);
	    t = strtok(NULL,s);
	}
		
	for(int i=word.size()-1; i>0; i--){
	    cout<<word[i]<<" ";
	}
	cout<<word[0]<<endl;   //注意 输出最后一个单词的后面不能加空格
    }
}

bool isFind(string s,char c)
{
    for(int i=0; i<s.size(); i++){
	if( s[i]==c ){
	    return true;
	}
    }
    return false;
} 
string getSplitc(char *str)
{ 
    string s;
    for(int i=0; i<strlen(str); i++){
	if( !isalpha(str[i]) ){  //如果当前字符不是分隔符 
	    if( !isFind(s,str[i]) ){  //如果这个分隔符之前没有被添加 
		s.push_back(str[i]);
	    } 
	}
    }
    return s;
} 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单词倒排(牛客) 的相关文章

随机推荐

  • Django的STATIC_URL、STATIC_ROOT、STATICFILES_DIRS、MEDIA_URL、MEDIA_ROOT意义、设置和使用

    以下经验是在Django2 1 1及Python3 5环境下 xff08 项目目录结构见结尾 xff09 1 STATIC ROOT 首先 xff0c 要有Django的开发模式和部署模式的概念 xff08 目前知道有这种东西就行 xff0
  • CSDN的富文本编辑器的自动保存说明

  • powershell中 find 命令报参数格式不正确

    在cmd命令行中查看本地网络连接数 netstat ant find C 34 192 34 注意必须加上引号 xff0c 否则包参数格式不正确 同样的命令在powershell 重执行报参数格式不正确 因为在powershell中使用带双
  • 识别有效的IP地址和掩码进行分类统计(牛客)

    题目描述 xff1a 请解析IP地址和对应的掩码 xff0c 进行分类识别 要求按照A B C D E类地址归类 xff0c 不合法的地址和掩码单独归类 所有的IP地址划分为 A B C D E五类 A类地址1 0 0 0 126 255
  • 整数与IP地址间的转换(牛客)

    题目描述 xff1a 原理 xff1a ip地址的每段可以看成是一个0 255的整数 xff0c 把每段拆分成一个二进制形式组合起来 xff0c 然后把这个二进制数转变成 一个长整数 举例 xff1a 一个ip地址为10 0 3 193 每
  • C++中的qsort、sort排序

    注意 xff1a int char string之类的是可以之间使用 gt lt 61 61 之类的进行判断 xff0c char 类型的使用strcmp就行了 而struct与vector都可以当做数组进行处理 xff0c cmp函数传递
  • 迷宫问题(牛客)

    题目描述 xff1a 定义一个二维数组N M xff08 其中2 lt 61 N lt 61 10 2 lt 61 M lt 61 10 xff09 xff0c 如5 5数组下所示 xff1a int maze 5 5 61 0 1 0 0
  • 查找兄弟单词(牛客)

    题目描述 xff1a 兄弟单词 xff1a 给定一个单词X xff0c 如果通过任意交换单词中字母的位置得到的新的单词Y xff0c 那么称X和Y是兄弟单词 注意 xff1a bca和abc是兄弟单词 xff0c abc和abc是相同单词
  • 合唱团(牛客)

    题目描述 xff1a 计算最少出列多少位同学 xff0c 使得剩下的同学排成合唱队形 说明 xff1a N位同学站成一排 xff0c 音乐老师要请其中的 N K 位同学出列 xff0c 使得剩下的K位同学排成合唱队形 合唱队形是指这样的一种
  • 字符串排序(牛客)

    题目描述 xff1a 编写一个程序 xff0c 将输入字符串中的字符按如下规则排序 规则 1 xff1a 英文字母从 A 到 Z 排列 xff0c 不区分大小写 如 xff0c 输入 xff1a Type 输出 xff1a epTy 规则
  • 字符串加密(牛客)

    题目描述 xff1a 有一种技巧可以对数据进行加密 xff0c 它使用一个单词作为它的密匙 下面是它的工作原理 xff1a 首先 xff0c 选择一个单词作为密匙 xff0c 如TRAILBLAZERS 如果单词中包含有重复的字母 xff0
  • 统计每个月兔子的总数(牛客)

    题目描述 xff1a 有一只兔子 xff0c 从出生后第3个月起每个月都生一只兔子 xff0c 小兔子长到第三个月后每个月又生一只兔子 xff0c 假如兔子都不死 xff0c 问每个月的兔子总数为多少 xff1f 输入描述 xff1a 输入
  • 购物单(牛客)(01背包+分组背包+有依赖的背包)

    题目描述 xff1a 王强今天很开心 xff0c 公司发给N元的年终奖 王强决定把年终奖用于购物 xff0c 他把想买的物品分为两类 xff1a 主件与附件 xff0c 附件是从属于某个主件的 xff0c 下表就是一些主件与附件的例子 xf
  • gmssl 生成SM2证书、加密、解密、签名、验签

    1 生成SM2密钥对 gmssl ecparam genkey name sm2p256v1 out sm2keypair pem text 2 查看SM2密钥对 gmssl ec in sm2keypair pem text 3 生成自签
  • 求小球落地5次后所经历的路程和第五次反弹的高度(牛客)

    题目描述 xff1a 假设一个球从任意高度自由落下 xff0c 每次落地后反跳回原高度的一半 再落下 求它在第5次落地时 xff0c 共经历多少米 第5次反弹多高 xff1f 最后的误差判断是小数点6位 输入描述 xff1a 输入起始高度
  • 输入一行字符,分别统计出包含英文字符、空格、数字和其他字符的个数(牛客)

    题目描述 xff1a 输入一行字符 xff0c 分别统计出包含英文字母 空格 数字和其它字符的个数 输入描述 xff1a 输入一行字符串 xff0c 可以有空格 1qazxsw23 edcvfr45tgbn hy67uj m ki89ol
  • 字符串合并处理(牛客)

    题目描述 xff1a 按照指定规则对输入的字符串进行处理 详细描述 xff1a 将输入的两个字符串合并 对合并后的字符串进行排序 xff0c 要求为 xff1a 下标为奇数的字符和下标为偶数的字符分别从小到大排序 这里的下标意思是字符在字符
  • 蛇形矩阵(牛客)

    题目描述 xff1a 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形 输入描述 xff1a 输入正整数N xff08 N不大于100 xff09 5 输出描述 xff1a 输出一个N行的蛇形矩阵 1 3 6 10 15 2 5 9
  • 图片整理(牛客)

    题目描述 xff1a Lily上课时使用字母数字图片教小朋友们学习英语单词 xff0c 每次都需要把这些图片按照大小 xff08 ASCII码值从小到大 xff09 排列收好 请大家给Lily帮忙 xff0c 通过C语言解决 输入描述 xf
  • 单词倒排(牛客)

    题目描述 xff1a 对字符串中的所有单词进行倒排 说明 xff1a 1 构成单词的字符只有26个大写或小写英文字母 xff1b 2 非构成单词的字符均视为单词间隔符 xff1b 3 要求倒排后的单词间隔符以一个空格表示 xff1b 如果原