现在学习Scala,特别是学习模式匹配,我用Scala编写了这个简单的阶乘方法:
def factorial(n : Int) : Int = {
if(n <= 1)
1
else
n * factorial(n -1)
}
然后,我想,我可以使用模式匹配,并写道:
def fact(n : Int) : Int = n match {
case 0 => 1
case n => n * fact(n -1)
}
但是我认为模式匹配的重点是对数据进行排序,为什么我需要在阶乘之类的东西上使用这个呢?
非常感谢。
我不太擅长正则表达式,坦率地说,我很难理解。因此,我的问题可能没有任何意义。
您是否可以使用正则表达式来保证当有人输入一个字符串时,它会从列表中找到最适合的字符串,并使其与其中一个条目相匹配?下面是列表可能的样子。
QR9456
QR6222
QR9487
QR2311
QR2311 AB
QR2311 A
QR4781
QR4781 A XX920-009
QR9456 Z
如果这个问题不能回答或者没有意义,我向您道歉。
我有一个使用like子句的数据库查询,它将导致全表扫描,并遇到了一个我很好奇的问题……
以下哪一项应该在Mysql中运行得更快,或者它们都会以相同的速度运行?在我的情况下,基准测试可能会回答这个问题,但我想知道为什么会这样。被过滤的列包含几千个字符,如果这很重要的话。
SELECT * FROM users WHERE data LIKE '%=12345%'
或
SELECT * FROM users WHERE data LIKE '%proileId=12345%'
我可以找出其中每一个可能优于另一个的原因,但我很好奇其中的逻辑。
我很难理解KMP算法。我知道前缀-后缀是什么,所以我写了计算前缀-后缀表的代码:
private int[] calculatePrefSuffArray(String pattern) {
char patternArray[] = pattern.toCharArray();
int tab[] = new int[pattern.length()];
tab[0] = 0;
int t = tab[0];
for (int i = 1; i < pattern.length(); i++) { // t = tab[i-1]
我想知道是否有更好的方法(在我的实现是正确的情况下)在给定数组中找到整数的子序列。我已经使用golang实现了解决方案(如果这是对评审的一个障碍,我可以使用另一种语言)。如果我没有弄错的话,下面的执行接近O(b)。
package main
import "fmt"
func main() {
a := []int{1, 2, 3}
b := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
r := match(a, b)
fmt.Println("Match found for case 1: ", r)
有像这样的函数吗?
使用GLib ,我发现的只有:
public bool match_all_full (string str, ssize_t string_len = -1, int start_position = 0, RegexMatchFlags match_options = 0, out MatchInfo match_info = null) throws RegexError
Using the standard algorithm for regular expression matching only the longest match in the string
让我先举一个例子。考虑一下python中的以下列表
cities = [
'New york'
'San francisco',
'California',
'Las vegas',
'Chicago',
'Miami'
]
我还有以下几句话。
sentences = [
"Both of us were new to New York City, and had few or no friends.",
"Wi