正在检查C++中字符串的先前元素
Checking previous elements of string in C++
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a;
cin >> a;
int index = a.find('?');
if(a[index]-1==3)
{
if(a[index]-2==3)
{
cout << "cool" << endl;
}
}
return 0;
}
我迄今为止的代码。我正在做一个在线挑战,这是文本(由我自己翻译成我的母语(。
你输入一个给定的数字"N",你的数字会有多长。然后你输入N个数字,数字中有一个"?"。
因此,我们面临的挑战是找到我们是否能形成一个"酷"的数字。如果一个幸运数字连续包含至少2个2(如"35225"(、至少3个3(如"353333"(、连续包含至少5个5(如"55555237"(、或至少7个7(如"7777777777"(或以上任意组合(如"333522227"(,则称为"酷"。
我的工作是编写一个程序,读取由数字2、3、5和7以及问号(?(组成的字符串S,并输出是否可以将S中的问号替换为数字2、3.5和7,以获得一个很酷的数字(每个问号只能替换为一个数字(。
如果输入字符串可以变成一个很酷的数字,程序应该输出"很酷",否则应该输出"无聊"(为了清晰起见,引用引号(。
示例:输入
8
233?5757
输出
cool
输入
10
57?5?757?3
输出
boring
欢迎任何建议!
a[index - 1]
访问字符串中的前一个字符。
很多东西:
cin >> a;
不会检查你是否真的读取了一个变量。。。我建议:
if (cin >> a)
{
// use a...
}
下一步。。。
int index = a.find('?');
if(a[index]-1==3)
这里,它应该是a[index - 1]
,但只有在index > 0
的情况下才有效。正在尝试访问元素<0具有未定义的行为-基本上意味着您将得到垃圾结果或崩溃。如果你使用a.at(index - 1)
,如果你的代码创建了一个无效的索引,编译器会抛出一个异常——这要安全得多:然后你就可以找出原因并修复你的代码。
其次,字符存储在ASCII表示中。要获得ASCII数字3,您需要在程序中编码"3":a[index - 1] == '3'
。
更普遍地说,回答这个问题的最快方法是从右到左扫描:如果你看到一个数字,那么检查该数字是否启动了同一数字的其他实例的"酷"序列或"?"s。如果你一直扫描,但不能完成一个很酷的序列,你可以考虑不匹配的字符,添加一个计数"?"s当你在字符串中向左后退时,一旦你到达非"?"的字符串的开头您可以向前扫描到新字符。这一切都有点棘手,但将是最有效的解决方案。。。。
- 是否可以在c++中处理字符串流中的各个元素
- 如何将元素添加到向量的字符串位置
- 如何在 Arduino 字符串的开头添加元素.类似于 JS unshift();
- C++将字符串数组的元素存储到变量中
- 循环访问还包含未使用元素的字符串数组
- 将包含多个元素的字符串作为输入并转换为矢量 C++
- 如何计算字符串中用户输入元素的出现次数?
- C++ 查找字符串中存在的元素向量
- 如何将凯撒密码的元素从字符串更改为字符串
- 常量数组如何在每个元素中只能包含字符,而 char* 数组能够指向每个元素中的字符串?
- 用字符串 c++ 比较对向量的元素
- 将指针作为缓冲区传递到第一个字符串元素
- C++字符串问题-如何访问字符串元素
- 将字符串集合中的元素添加到字符串集合的向量中
- 如何将字符串加载到BYTE*数组(C++)的元素中
- 需要从字符串数组的一部分访问元素
- 如何打印出常量字符串的第一个元素?
- 如何使用libxml2从C 中的XML文件中检索节点和特定元素字符串而不使用XPATH
- 如何使用XPath使用libxml2从C 中的XML文件中检索节点和特定元素字符串
- 添加元素<字符串、指针>以提升无序哈希图