这题的细节在于一句话:“输入的内容包含小写字母、英文句号、退格符”。如此一来就是在告诉我们“范文”也有可能存在退格符!
然后就需要对带有退格符的字符串进行解析,这是这题算法的关键!
如果有一个退格就删去距离该退格最近的字符,这一点用过office的同学应该都很了解!那么如果有多个退格呢?就需要把距离该退格最近的多个字符全删除!如何描述这个过程呢?很明显,距离该退格最近的字符是后加入的,却要最先删除就是先排出。那么这样看就是很明显的“栈”结构!所以这题用栈去模拟就很Easy!
#include <iostream>
#include <string>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;
using ui = unsigned int;
string process(string str) {
ui nlen = str.size();
string ret = "";
stack<char> stk;
for (ui i = 0; i < nlen; ) {
if ('<' != str[i]) {
stk.push(str[i]);
++i;
}
else {
if (!stk.empty()) {
while (i < nlen && '<' == str[i] && !stk.empty()) {
stk.pop();
++i;
}
}
else {
++i;
}
}
}
while (!stk.empty()) {
ret += stk.top();
stk.pop();
}
reverse(ret.begin(), ret.end());
return ret;
}
int main() {
vector<string> vec;
string curStr;
while (getline(cin, curStr) && "EOF" != curStr) {
curStr = process(curStr);
vec.push_back(curStr);
}
int j = 0, cnt = 0, times, ans;
while (getline(cin, curStr) && "EOF" != curStr) {
curStr = process(curStr);
string modelStr = vec[j];
ui nlen = (curStr.size() < modelStr.size()) ? curStr.size() : modelStr.size();
for (ui i = 0; i < nlen; ++i) {
if (modelStr[i] == curStr[i]) {
++cnt;
}
}
++j;
}
cin >> times;
ans = (int)(cnt * 60.0 / times + 0.5);
cout << ans << endl;
return 0;
}
四舍五入在数据的处理里是很常见的问题,现在C11、C++11都有响应的函数去处理。但是我们也不能忘记最初的处理方式:
(1)四舍五入到整数:
ans = (int)(ans + 0.5)
因为int强制类型转换是向下取整的,所以如果是大于等于0.5的小数部分在加上0.5后进位,然后向下取整就得到“四舍五入”的结果了!
(2)四舍五入到1位小数:
ans = (int)(ans * 10 + 0.5) * 0.1
(3)四舍五入到2位小数:
ans = (int)(ans * 100 + 0.5) * 0.01
(3)四舍五入到N位小数:
a
n
s
=
(
i
n
t
)
(
x
?
1
0
n
+
0.5
)
?
1
0
?
n
ans = (int)(x*10^n+0.5)*10^{-n}
ans=(int)(x?10n+0.5)?10?n
本文将研究 ES6 的 for ... of 循环。 旧方法 在过去,有两种方法可以遍历 javas...
ADO对象: Connection Command Recordset Record Stream ASP支持的对象很多,可...
一、正则表达式概述 二、正则表达式在VBScript中的应用 三、正则表达式在VavaScr...
计算属性computed: 支持缓存,只有依赖数据发生改变,才会重新进行计算 不支持...
【排序算法】之lowb三人组冒泡、插入、选择 什么是lowb三人组 冒泡排序bubble so...
vbs:把一段文字中指定字符颜色变成红色的正则 functionc(Tstr,Word) Dimre Setre...
微信文件传输助手是微信电脑版与手机微信之间相互传输图片等文件的好工具,但很...
前言 相信大家都知道在IDE中代码的智能提示几乎都是标配,虽然一些文本编辑器也...
一石激起千层浪,继中国区浩浩荡荡的大裁员告一段落之后,甲骨文并未因此收起手...
歌词编辑器 歌词编辑器 第一步:选择要播放的歌曲并播放 第二步:填写全部的歌词...