c# - 检测字符串是否适合字符串序列的最快方法
问题描述
想象一下这样的字符串序列:
- aa11
- aa12
- aa13
- ......
- aa99
- ab11
- ……
- az99
- 巴11
- ……
- zz99
我想检测一个字符串是否存在于由和 atest
确定的字符串序列之间。例如:startString
endString
string test = "cc53";
string test2 = "hf15"
string startString = "aa11";
string endString = "ff99";
test.ExistsInBetween(startString, endString) // must be true
test2.ExistsInBetween(startString, endString) // must be false
public static bool ExistsInBetween(this string input, string start, string end)
{
// I don't know where to begin
}
我已经尝试(成功地)将 start 和 end 之间的所有字符串生成为 aHashSet<string>
并运行 a hash.Contains(test)
,但是您可以想象,对于较长的字符串,它的性能非常差。
注意事项:
- 字符串可以有不同的长度(但是,在给定的测试中,三个字符串的长度总是相同的)
- 字符只能是数字或数字和字母
解决方案
一个简单的string.Compare
应该工作:
public static class StringExtensions
{
public static bool ExistsInBetween(this string input, string start, string end)
{
return string.Compare(input, start) >= 0 && string.Compare(input, end) <= 0;
}
}
推荐阅读
- javascript - 从 setTimeout 函数返回第一个值
- linux - rpm build .spec 更新时删除我的程序配置目录
- android - Android:将 AAR 库添加到项目后,应用程序和活动主题停止工作
- assembly - 故意在 RISC-V 中提出非法指令
- powershell - 使用 powershell 读取文本文件并捕获数组中的内容
- python - 如何在熊猫中列出最高相关对(一个规范列与所有其他列)?
- python - 在无限循环期间更新kivy解析器应用程序中的标签
- snowflake-cloud-data-platform - 使用 Snowflake UDF 查询变更跟踪表元数据
- javascript - nginx和nestjs认证部分之间的错误
- r - 运算符如何不使用 is.numeric