例如我有一个c ++,它从文件中获取2个整数。例如int a = 2052342和int b = 2.我需要进行搜索,搜索b是否在a中。所以在这个例子中,b在a里面,但是如果b将是例如7则不是。我应该使用什么样的功能,你能给我一个快速的演示吗? 编辑:不,这不是一个功课,今年我将参加程序员奥林匹克竞赛,所以我正在编写最后一个程序员奥林匹克运动会的所有C ++练习。
答案 0 :(得分:3)
你使用一个非常好的例子而没有太多解释“如果b在a里面'的意思。你只是检查'int b'的子串是否在'int a'里面?如果B是205,或者234,那还算吗?
也许不是最好的方法,但很简单,就是将每个整数转换为字符串,然后进行子字符串检查以查看stringB是否是stringA的子字符串。
更新:事实上,当您解析文件时,我只是将其作为字符串读取,甚至不将其视为整数问题。你只是在进行子串检查。此外,如果将它们解析为整数,则会导致0-padding丢失。
如果你在谈论分裂或其他事情,可以通过分裂来完成。
答案 1 :(得分:3)
最简单的答案就是将数字保存在字符串中
表示,并使用std::find
。如果你已经有数字了
内部格式,并将它们转换为字符串将是太昂贵:
如果a % 10 == b
的低位数等于a
,则b
将为真
a /= 10
将移除低位数。所以:
while ( a != 0 && a % 10 != b ) {
a /= 10;
}
return a != 0;
应该这样做。