题目1010:A + B(字符串拆分)
问题来源
http://ac.jobdu.com/problem.php?pid=1010
问题描述
给我们一行标准的字符串,整行读入之后,把它拆开转换成数字进行计算。
问题分析
首先考虑一个问题:如何整行读入字符串?为此我特地写了一篇博客来解释,如何使用各种方法整行读入字符串,请参考:http://www.cnblogs.com/AlvinZH/p/6798023.html
本题的难点在于拆开字符串。由于在C/C++里面是没有spilit函数的,但是它有strtok函数,我们可以自己协议标准的spilit函数。
字符串分割strtok函数详解:http://blog.csdn.net/mycwq/article/details/14648011
在代码中我自定义了一个spilit函数,以后可以用这个当做模板函数来用!
参考代码
//
// Created by AlvinZH on 2017/4/30.
// Copyright (c) AlvinZH. All rights reserved.
// #include <iostream>
#include <cstdio>
#include <vector>
#include <cstring>
using namespace std; vector<string> split(string& str,const char* c)
{
char *cstr,*p;
cstr = new char[str.size()+];
strcpy(cstr,str.c_str()); vector<string> res;
p = strtok(cstr,c);
while(p!=NULL)
{
res.push_back(string(p));
p = strtok(NULL,c);
}
delete[] cstr; return res;
}
int wordTOnum(string s)
{
if(s=="zero") return ;
else if(s=="one") return ;
else if(s=="two") return ;
else if(s=="three") return ;
else if(s=="four") return ;
else if(s=="five") return ;
else if(s=="six") return ;
else if(s=="seven") return ;
else if(s=="eight") return ;
else if(s=="nine") return ;
} int main()
{
int x,y;
bool afterAdd;
string str;
const char *delims=" ";
while(getline(cin,str))
{
x=y=;
afterAdd=false;
vector<string> s;
s=split(str,delims); if(s[]=="zero"&&s[]=="zero") break; int len=s.size();
for(int i=;i<len-;i++)
{
if(s[i]=="+") afterAdd=true;
else
{
if(afterAdd) x=x*+wordTOnum(s[i]);
else y=y*+wordTOnum(s[i]);
}
}
cout<<x+y<<endl;
}
}
作者: AlvinZH
出处: http://www.cnblogs.com/AlvinZH/
本人Github:https://github.com/Pacsiy/JobDu
本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
题目1010:A + B(字符串拆分)的更多相关文章
- UTF-8编码的字符串拆分成单字、获取UTF-8字符串的字符个数的代码及原理
一.字符编码简介 1. ASCII码 在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(by ...
- SQL2000/2005字符串拆分为列表通用函数
------------------------------------------------------------------ -- Author : htl258(Tony) -- Dat ...
- sql之cursor的简介和字符串拆分(split)与游标的使用
字符串拆分(split)与游标的使用 CREATE TABLE Plates ( ,), ) NOT NULL, [BusinessId] INT NOT NULL, ) ),),), SELECT ...
- SQL 字符串拆分
字符串拆分: ALTER FUNCTION [dbo].[f_Split](@sText nvarchar(max),@split NVARCHAR(20)) RETURNS @t TABLE (id ...
- php将长字符串拆分为指定最大宽度的字符串数组
/** * 将字符串拆分为指定最大宽度的字符串数组.单字节字符宽度为1,多字节字符通常宽度为2 * @param string $msg 要拆分的字符串 * @param int $width 结果数 ...
- 截取字符(pos,copy,Leftstr,MidStr,RightStr)以逗号为准把字符串拆分,判断字符串是否有数字、字母(大小写), 去掉字符串空格
1.copy(a,b,c) 举个例子: str := “123456”;str1 := Copy(Str,2,3);结果就是 str1 等于 234.Copy有3个参数,第一个是你要处理的字符串,第二 ...
- Java字符串拆分和字符串连接
Java字符串拆分/连接 public class LierString{ //------------------------------------------------------------ ...
- java解析字符串拆分单独元素
有时候,需求要求传递多个字符串参数,但是方法参数已经固定为单个String,笔者在学习unity和android之间的消息传递时就遇到这个问题,所以就写了这么一个解析字符串拆分单独元素的方法. 示例: ...
- mycat1.6.5分片(字符串拆分hash)
https://blog.csdn.net/webnum/article/details/78313525 分片规则:字符串拆分hash 一.conf/schema.xml文件 <?xm ...
- 单列表变量与字符串拆分的对照(SqlServer)
最近遇到一个问题,在SQLServer中,需要根据用户传入的一系列ID值更新对应的记录.有两种方法,一种是将这些ID值使用逗号分隔,拼接成字符串传入,一种是以表变量的方式传入.最开始,我想当然的认为传 ...
随机推荐
- 基于jquery的ajax方法封装
在实际的项目里,ajax的应用频率很高,所以尽管jquery或者其他的一些类似的js库做了非常不错的封装,仍然有进一步封装简化的空间和必要 举一个例子,很久很久以前,我的ajax是这么写的: $.aj ...
- Centos6.6升级python2到python3
系统更新部分: 一.由于系统原有的源无法连接,需要更新为新的源.起初,首选163的源,但是由于更改源以后,无法使用yum等问题,所以直接使用上海交通大学提供的源. 修改前,将原来/etc/yum.re ...
- HUST软工1501-1503班第2周作业成绩公布
说明 本次公布的成绩对应的作业为: 第2周个人作业:WordCount编码和测试 如果同学对作业成绩存在异议,在成绩公布的72小时内(截止日期4月26日0点)可以进行申诉,方式如下: 毕博平台的第二周 ...
- windows10最实用的快捷键、高效的windows模式
win+方向键 将软件窗口放置到方向 ctrl+win+左右方向键 切换虚拟桌面 win+tab 选择窗口或虚拟桌面,然后按着win随后放开,界面停留 alt+tab 切换窗口 ctrl+win+D ...
- C# 随机串的生成
/** * 生成随机串,随机串包含字母或数字 * @return 随机串 */ public static string GenerateNon ...
- 在word上写博客直接发到CSDN
目前大部分的博客作者在写博客这件事情上都会遇到以下3个痛点:1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.2.发布到博客或公众号平台 ...
- Leaflet入门:添加点线面并导入GeoJSON数据|Tutorial of Leaflet: Adding Points, Lines, Polygons and Import GeoJSON File
Web GIS系列: 1.搭建简易Web GIS网站:使用GeoServer+PostgreSQL+PostGIS+OpenLayers3 2.使用GeoServer+QGIS发布WMTS服务 3.使 ...
- 编写高质量代码改善C#程序的157个建议——建议132:考虑用类名作为属性名
建议132:考虑用类名作为属性名 一般来说,若果属性对应一个类型,应该直接用类型名命名属性名.如下: class Person { public Company Company { get; set; ...
- Alpha冲刺(九)
Information: 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Details: 组员1(组长)柯奇豪 过去两天完成了哪些任务 进一步优化代码,结合自己负责的部分修 ...
- 每天多学一个Linux命令--man
今天学习的是“有问题,找男人”.man是manual(操作说明)的简写.它提供强大的帮助文档,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可. 第一列代表的是章节代号,第二列代表的是 ...