- 主题:各位大师,又来请教算法。
判断 number 是不是在 starts-ends 范围内。
bool inRange(std::string_view starts, std::string_view ends, std::string_view number)
{
}
比如
inRange("100", "200", "128");, 返回 true
inRange("100", "200", "300");, 返回 false
inRange("100", "200", "100");, 返回 true
数据量大概有100万级别。
目前就是傻傻地转换为数字然后对比, 有更优雅高效的实现吗?
--
修改:speedboy2998 FROM 218.76.62.*
FROM 218.76.62.*
直接字符串比较,长的比短的大,同样长度比字符串。如果数字串前面没有额外零,这样等价于数值比较。
【 在 speedboy2998 的大作中提到: 】
: 判断 number 是不是在 starts-ends 范围内。
:
: bool inRange(std::string\_view starts, std::string\_view ends, std::string_view number)
: {
:
: }
:
: ..................
发自「今日水木 on 钛星」
--
修改:ble FROM 222.129.51.*
FROM 222.129.51.*
先去除前置补位0,直接比较字符串就是结果!ASCII码。
【 在 speedboy2998 的大作中提到: 】
: 判断 number 是不是在 starts-ends 范围内。
: bool inRange(std::string_view starts, std::string_view ends, std::string_view number)
: {
: ...................
--
FROM 36.45.46.*
转数字又直观,容易维护,开销又不大,为啥要和自己较劲?你这是对效率要求多么极致,整个工程是汇编吗。。?
或者直接先比较size然后strcmp可以吗?
【 在 speedboy2998 的大作中提到: 】
: 判断 number 是不是在 starts-ends 范围内。
:
: bool inRange(std::string_view starts, std::string_view ends, std::string_view number)
: ...................
--
修改:GoGoRoger FROM 222.129.51.*
FROM 222.129.51.*