需要一个这样的方法
int calc(string left,string right)
返回值为字符串left的右半部分与字符串right的左半部分重复字符的个数。
比如 left="hello" right="lloabc" 返回 3
比如 left="world" right="doit" 返回 1
比如 left="hello" right="helloworld" 返回 5
比如 left="hello" right="hello" 返回 5
比如 left="hello" right="world" 返回 0我只想到先取left的最右边一个字符与right的最左边一个字符比较,再取left的最右边两个字符与right的最左边两个字符比较,再取left的最右边三个字符与right的最左边三个字符比较……这样子很耗时,有没有什么好办法呢?
int calc(string left,string right)
返回值为字符串left的右半部分与字符串right的左半部分重复字符的个数。
比如 left="hello" right="lloabc" 返回 3
比如 left="world" right="doit" 返回 1
比如 left="hello" right="helloworld" 返回 5
比如 left="hello" right="hello" 返回 5
比如 left="hello" right="world" 返回 0我只想到先取left的最右边一个字符与right的最左边一个字符比较,再取left的最右边两个字符与right的最左边两个字符比较,再取left的最右边三个字符与right的最左边三个字符比较……这样子很耗时,有没有什么好办法呢?
解决方案 »
- 提供一个我写了半年的IM源码,谁要? 也可能有人听说过,我写的“百度HI”
- C# winform 如何将数据库中的数据,用TreeView动态显示在界面上?
- c#怎样实现刷卡计时!!!!急啊
- (C#版本)wm5.0的GPS问题,如何将GPS例子中添加海拔和方向的参数?
- 返回当前ID(请高手指教)
- 300分高难问题
- 关于Session的问题
- 花银子买代码,能提供源代码与我联系。 详细要求如下
- 关于directx的问题
- dev的PropertyGridControl循环绑定对象属性,第一个绑定完后怎么清空propertygrid的数据
- 如何使用wininet的InternetSetOptionA设置ftp超时时间
- 不支持给定路径的格式。
这个 。。其实可以用正则式搞定
把left和right合并,中间用分割符号如%
用以下正则式
(.*)%\1.*?
如hello%lloabc匹配 llo hello%helloworld 匹配hello哈哈 ,返回匹配索引就是
比如left="hello%lloabc" right="abcdefg"
要说效率,当然是写几个for比较快,我说的是偷懒的方法
static int calc(string left, string right)
{
if (left == null || right == null) return 0;
int p = left.Length;
int q = right.Length;
for (int r = p < q ? p : q; r > 0; r--)
if (left.Substring(p - r) == right.Substring(0, r)) return r;
return 0;
}
if((left.substring(0,i+1) + right).startWith(left))
return left.lenth - i;
return 0;
{
int count = 0;
if (right.IndexOf(left) == 0)
{
count = left.Length;
}
else
{
while (left.Length > 0)
{
left = left.Remove(0,1);
if (right.IndexOf(left) == 0)
{
count = left.Length;
break;
} }
}
return count;
}