【华为机试ACM基础#01】字符串最后一个单词长度、计算某字符出现次数、提取不重复的整数(熟悉字符/字符串/整数的输入)
字符串最后一个单词的长度
描述
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
输入描述:
输入一行,代表要计算的字符串,非空,长度小于5000。
输出描述:
输出一个整数,表示输入字符串最后一个单词的长度。
示例1
输入:hello nowcoder
输出:8
说明:最后一个单词为nowcoder,长度为8
思路
从后向前遍历字符串并计数,当第一次遇到空格就停止遍历,返回此时的计数变量即可
代码
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;//用于保存输入字符串
getline(cin, s);//用于从输入流读取一行文本
int lenCount = 0;
for(int i = s.size() - 1; i >= 0; --i){
if(s[i] != ' ') ++lenCount;
if(lenCount != 0 && s[i] == ' ') break;
}
cout << lenCount << endl;
// printf("%d",lenCount);//用哪种输出都行
return 0;
}
注意,从后往前遍历可能会先遇到空格,因此我们需要注意末尾的空格
(由LeetCode用例s = " fly me to the moon "得到的教训)
计算某字符出现次数
描述
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)
数据范围: 1≤n≤1000
输入描述
第一行输入一个有字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。
输出描述
输出输入字符串中含有该字符的个数。(不区分大小写字母)
示例1
输入:ABCabc
A
输出:2
思路
先将输入字符和字符串都转成小写,然后比较即可,相同就计数
#include <iostream>
#include <string>
#include <cctype>
#include <algorithm>
using namespace std;
int main(){
string s;
getline(cin, s);
char target;
cin >> target;
target = tolower(target);//将目标字符转换为小写
transform(s.begin(), s.end(), s.begin(), ::tolower);//将目标字符串转换为小写
int count = 0;
for(int i = 0; i < s.size(); i++){
if(s[i] == target) count++;
}
cout << count << endl;
return 0;
}
知识点:
include 包含了一些用于字符分类和转换的函数。常见的函数有:
- isalnum(char c):判断字符 c 是否为字母或数字。
- isalpha(char c):判断字符 c 是否为字母。
- isdigit(char c):判断字符 c 是否为数字。
- isspace(char c):判断字符 c 是否为空白字符(空格、制表符、换行符等)。
- tolower(char c):将字符 c 转换为小写字母。
- toupper(char c):将字符 c 转换为大写字母。
提取不重复的整数
输入一个 int 型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
保证输入的整数最后一位不是 0
数据范围: 1≤n≤108
输入描述:输入一个int型整数
输出描述:按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
思路
用哈希表(数组)呗,不断的对输入整数进行除10操作,每次除完之后通过取模的方式拿到个位数
检查该数在哈希数组中是否没有记录,没有就更新记录并将其用于计算最终的输出结果
计算方式为反转数字(reverse number)算法,类似方法在复原IP地址中也使用过
#include <iostream>
using namespace std;
int main() {
int num;
cin >> num;
int res = 0;
int arr[10] = {0};
while(num){
if(arr[num % 10] == 0){//该值未出现过
arr[num % 10]++;//更新记录
res = res * 10 + num % 10;//计算之后的返回值
}
num /= 10;
}
cout << res << endl;
}
输入输出总结
ACM下关于字符串/字符/整数的输入有:
#include <iostream>
#include <string>
//获取一行字符串输入
string s;//用于保存输入字符串
getline(cin, s);//用于从输入流读取一行文本
string s;
cin >> s;
//获取一个字符输入
char c;
c = cin.get();
//获取一个整数输入
int a;
cin >> a;
输出一般就用cout即可,也可以用printf
【华为机试ACM基础#01】字符串最后一个单词长度、计算某字符出现次数、提取不重复的整数(熟悉字符/字符串/整数的输入)的更多相关文章
- 华为机试ACM(字符组合问题)
今晚做了华为的机试,3道ACM题,最后一道是实现从M个不同字符中任取N个字符的所有组合. eg: input:ABC 2 output:AB AC BC 第一个输入为字符串,第二个输入为组合的字符个数 ...
- 华为机试001:字符串最后一个单词的长度(华为OJ001)
华为机试 字符串最后一个单词的长度 计算字符串最后一个单词的长度,单词以空格隔开. 提交网址: http://www.nowcoder.com/practice/8c949ea5f36f422594b ...
- 2014华为机试西安地区A组试题
2014华为机试西安地区A组试题 题目一.分苹果 M个同样苹果放到N个同样篮子里有多少种放法,同意有篮子不放. 1<=M<=10.1<=N<=10 比如5个苹果三个篮子,3,1 ...
- 2014华为机试西安地区B组试题
2014华为机试西安地区B组试题 题目一.亮着点灯的盏数 一条长廊里依次装有n(1≤n≤65535)盏电灯,从头到尾编号1.2.3.-n-1.n.每盏电灯由一个拉线开关控制.開始,电灯所有关着. 有n ...
- 华为oj之字符串最后一个单词的长度
题目: 字符串最后一个单词的长度 热度指数:9697 时间限制:1秒 空间限制:32768K 本题知识点: 字符串 题目描述 计算字符串最后一个单词的长度,单词以空格隔开. 输入描述: 一行字符串,非 ...
- HW—字符串最后一个单词的长度,单词以空格隔开。
描述 计算字符串最后一个单词的长度,单词以空格隔开. 知识点 字符串,循环 运行时间限制 0M 内存限制 0 输入 一行字符串,长度小于128. 输出 整数N,最后一个单词的长度. 样例输入 hell ...
- OJ题:字符串最后一个单词的长度
题目描述 计算字符串最后一个单词的长度,单词以空格隔开. 输入描述: 一行字符串,非空,长度小于5000. 输出描述: 整数N,最后一个单词的长度. 输入例子: hello world 输出例子: 5 ...
- C语言之计算字符串最后一个单词的长度,单词以空格隔开
//计算字符串最后一个单词的长度,单词以空格隔开. #include<stdio.h> #include<string.h> #include<windows.h> ...
- Reverse Word in a String(翻转字符串)&字符串最后一个单词的长度
1.题目: Given an input string, reverse the string word by word. For example,Given s = "the sky is ...
- test_1 计算字符串最后一个单词的长度,单词以空格隔开
题目描述:计算字符串最后一个单词的长度,单词以空格隔开. 输入描述: 一行字符串,非空,长度小于5000. 输出描述: 整数N,最后一个单词的长度. #coding=utf-8 str = raw_ ...
随机推荐
- [转帖]【JVM】Java内存区域与OOM
引入 Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的"高墙",墙外面的人想进去,墙里面的人却想出来. Java虚拟机运行时数据区 如图所示 1.程序计数器(线程私有 ...
- SPECJVM2008的简单结果
SPECJVM2008的简单结果 摘要 前面两天学习了SPECJVM2008简单使用. 今天进行一下简单的数据采集. 需要说明一下SPECJVM2008貌似仅兼容JDK1.8 更新的LTS版本都不兼容 ...
- Opentelemetry Metrics SDK
Metrics SDK 目录 Metrics SDK 目标 期望 SDK 术语 数据流图表 要求 SDK MeterProvider Shutdown SDK:Instrument注册 SDK: Re ...
- selenium使用cookie登录百度网页
1.首先我们先来了解下cookie的几种方法 get_cookies():获取所有cookie值 get_cookie(name):根据cookie的name值获取对应的value值 get_all_ ...
- 隐私集合求交(PSI)协议研究综述
摘要 隐私集合求交(PSI)是安全多方计算(MPC)中的一种密码学技术,它允许参与计算的双方,在不获取对方额外信息(除交集外的其它信息)的基础上,计算出双方数据的交集.隐私集合求交在数据共享,广告转化 ...
- drools规则动态化实践
作者:京东物流 李振 康睿 刘斌 王北永 一 . 规则引擎业务应用背景 业务逻辑中经常会有一些冗长的判断,需要写特别多的if else,或者一些判断逻辑需要经常修改.这部分逻辑如果以java代码来实现 ...
- uni-app事件冒泡 如何解决事件冒泡 推荐tap事件
冒泡事件## 冒泡事件 <view class="max-box" @tap="waimian"> 外面 <view class=" ...
- # 继续前行github star突破8k即时通讯IM开源项目OpenIM版本发布计划
项目简介 OpenIM继续领跑开源IM领域,在广大开发者的支持下,目前github star突破8k.在数据泄露.信息外泄.隐私滥用的时代,IM私有化部署需求旺盛.其中,政企协同办公对IM需求猛增,随 ...
- 从零开始配置vim(25)——关于 c++ python 的配置
从9月份到国庆这段时间,因为得了女儿,于是回老家帮忙料理家事以及陪伴老婆和女儿.一时之间无暇顾及该系列教程的更新.等我回来的时候发现很多小伙伴私信我催更.在这里向支持本人这一拙劣教程的各位小伙伴表示真 ...
- 5.10 Windows驱动开发:摘除InlineHook内核钩子
在笔者上一篇文章<内核层InlineHook挂钩函数>中介绍了通过替换函数头部代码的方式实现Hook挂钩,对于ARK工具来说实现扫描与摘除InlineHook钩子也是最基本的功能,此类功能 ...