什么是最有效的通配符字符串匹配算法?我只询问一个想法,没有必要提供实际的代码.
我认为这样的算法可以使用排序的后缀数组构建,这可以产生O(log(n))的性能.
我对么?
编辑:
我的意思是模式"A*B","*sip*"或者"A?B"星形意味着任意数量的符号,而问号意味着单个符号.
当我尝试将strServerIP添加到类Server时,我得到一个:
无法解析符号字符串
编译器错误.
为什么?
package com.example;
public class Server
{
//public static java.lang.string SERVERIP;
public static android.R.string SERVERIP;
public static java.lang.string strServerIP = "monster.idsoftware.com";
public static string strServerIP = "monster.idsoftware.com";
public static int SERVERPORT = 27950;
public static int PROTOCOL = 68;
}
Run Code Online (Sandbox Code Playgroud) 我即将开始一个新项目并计划使用YUI和我的JS和CSS框架,原因如下:
我打算只使用1个JS框架.
有没有人看到我的决定有任何问题?
我在我的c#项目中使用c ++ dll,它在我的窗口xp机器上运行正常,但是当我在window 2003服务器(x64)上复制我的调试项目时,我收到下面的错误,任何人都可以告诉我这是什么问题,并且我该怎么办呢.
谢谢
"System.DllNotFoundException:无法加载DLL'lib.dll':此应用程序无法启动,因为应用程序配置不正确.重新安装应用程序可能会解决此问题"
以下代码相当简单 - 它用随机选择的像素填充设计表面 - 没什么特别的(暂时忽略第二种方法中的XXXXXXX).
private void PaintBackground()
{
Random rnd = new Random();
Bitmap b = new Bitmap(this.Width, this.Height);
for (int vertical = 0; vertical < this.Height; vertical++)
{
for (int horizontal = 0; horizontal < this.Width; horizontal++)
{
Color randomColour = GetRandomColor(rnd);
b.SetPixel(horizontal, vertical, randomColour);
}
}
Graphics g = this.CreateGraphics();
g.DrawImage(b, new Point(0, 0));
}
public Color GetRandomColor(Random rnd)
{
XXXXXXXXXXXXXXXX
byte r = Convert.ToByte(rnd.Next(0, 255));
byte g = Convert.ToByte(rnd.Next(0, 255));
byte b = Convert.ToByte(rnd.Next(0, 255));
return …Run Code Online (Sandbox Code Playgroud) 我使用注册表和键创建了一个新的Windows shell上下文菜单项
HKLM\Software\Classes\Folder\shell\appname
HKLM\Software\Classes\Folder\shell\appname\command
Run Code Online (Sandbox Code Playgroud)
现在我想为这个命令添加一个图标.我怎么做的?
我是一位经验丰富的开发人员,但不是Perl.我通常学习Perl来破解脚本,然后我再次忘记它直到下一次.因此,我正在寻找专业人士的建议.
这一次,我正在构建一系列数据分析脚本.大致简化,程序结构如下:
01 my $config_var = 999;
03 my $result_var = 0;
05 foreach my $file (@files) {
06 open(my $fh, $file);
07 while (<$fh>) {
08 &analyzeLine($_);
09 }
10 }
12 print "$result_var\n";
14 sub analyzeLine ($) {
15 my $line = shift(@_);
16 $result_var = $result_var + calculatedStuff;
17 }
Run Code Online (Sandbox Code Playgroud)
在现实生活中,有大约六个不同的config_vars和result_vars.
这些脚本主要区别于分配给config_vars 的值.主循环在每种情况下analyzeLine()都是相同的,并且将大致相同但可能有一些小的变化.
我可以通过制作此代码的N份副本来实现我的目的,并且在这里和那里进行小的改动; 但这严重违反了各种良好设计规则.理想情况下,我想编写一系列脚本,其中只包含一组config var初始化,然后是
do theCommonStuff;
Run Code Online (Sandbox Code Playgroud)
请注意,config_var(和它的兄弟姐妹)必须可用于公共代码,必须result_var和它的外观相似,在其analyzeLine()上进行一些计算.
我应该将"常用"代码打包到模块中吗?创建一个类?使用全局变量?
虽然不完全是代码高尔夫,但我正在寻找一个简单,紧凑的解决方案,这将允许我干,只为差异编写代码.我想我宁愿不从包含所有配置的巨大表中驱动代码,当然也不会使它适应使用数据库.
期待您的建议,谢谢!
更新 …
是否有可能提高这些linq请求的效率?我使用两个不同的循环...你能帮我优化这段代码吗?
double[] x = { 2, 3, 1, 5, 7, 2, 3 };
double[] y = { 1, 2, 3, 4, 5, 6, 7 };
IEnumerable<int> range = Enumerable.Range(0, x.Length);
double[] y_sorted = (from n in range orderby x[n] select y[n]).ToArray();
double[] x_sorted = (from n in range orderby x[n] select x[n]).ToArray();
Run Code Online (Sandbox Code Playgroud)
python中的这段代码就像你喜欢的那样:
x_index = argsort(x)
x_sorted = [x[i] for i in x_index]
y_sorted = [y[i] for i in x_index]
Run Code Online (Sandbox Code Playgroud)
你会注意到,在这个python代码中,我只使用一种.这不是c#代码的情况.
我们应该到最后:
x_sorted = { 1, 2, 2, 3, 3, …Run Code Online (Sandbox Code Playgroud) 我需要测试是否有任何字符串'hello','i am','dumb'存在于名为$ ohreally的较长字符串中,如果其中一个存在,我的测试结束了,并且我知道这两个字符串都没有如果其中一个人有其他人将会发生.
在这些情况下,我要求您提供最有效的搜索方式,
strpos()3次这样?
if (strpos ($ohreally, 'hello')){return false;}
else if (strpos ($ohreally, 'i am')){return false;}
else if (strpos ($ohreally, 'dumb')){return false;}
else {return true;}
Run Code Online (Sandbox Code Playgroud)
还是一个preg_match?
if (preg_match('hello'||'i am'||'dumb', $ohreally)) {return false}
else {return true};
Run Code Online (Sandbox Code Playgroud)
我知道preg_match代码是错误的,如果有人能提供正确的版本,我真的很感激.
谢谢!
回答
请阅读cletus所说的内容和测试middaparka吼叫.我还做了一个mirco时间测试,在各种字符串,长短.有了这些结果
如果,您知道字符串值发生的概率从最可能到最小可能.(我没有注意到在命令正则表达式本身时,即在/hello|i am|dumb/或之间存在明显的不同/i am|dumb|hello/.
另一方面,在连续的strpos中,概率完全不同.例如,如果"你好"发生率为90%,"我是"7%,"哑巴"发生率为3%.您想组织代码以先检查'hello'并尽快退出该功能.
我的microtime测试显示了这一点.
对于在第一,第二和第三次strpos()执行中分别找到针的干草堆A,B和C,时间如下,
strpos:
A:0.00450秒// 1个strpos()
B:0.00911秒// 2个strpos()
C:0.00833秒// 3个strpos()
C:0.01180秒// 4个strpos()添加了一个额外的
对于preg_match:
A:0.01919秒// 1 preg_match()
B:0.02252秒// 1 preg_match()
C:0.01060秒// 1 preg_match()
正如数字显示的那样,strpos在4rth执行时速度更快,因此我将使用它而不是因为我只有3个子命令来检查:)
我想对URL进行一些操作.
需要在已创建的URL中添加子域,如下所示
输入
String inputURL = "http://www.myhost.com";
String subdomain = "newlocation";
Run Code Online (Sandbox Code Playgroud)
产量
String output = "http://www.newlocation.myhost.com";
Run Code Online (Sandbox Code Playgroud)
我在想是否有任何现有的实用工具类可以为我做这件事.专家可以有话要说.
谢谢你的帮助 !
c# ×3
java ×2
algorithm ×1
android ×1
bitmap ×1
brush ×1
coding-style ×1
css ×1
dll ×1
drawing ×1
frameworks ×1
graphics ×1
javascript ×1
linq ×1
optimization ×1
performance ×1
perl ×1
php ×1
refactoring ×1
registry ×1
search ×1
sockets ×1
string ×1
udp ×1
windows ×1
yui ×1