【发布时间】:2017-11-21 03:26:33
【问题描述】:
我对 SML 很陌生,我正在尝试编写一个函数来确定字符串是否平衡。 平衡弦是: 1. 一个字符串,其中“(”的出现次数等于“)”的次数。 2.在每个前缀中“)”出现的次数不超过“(”。 例如:")(" 不平衡,因为第二个条件不适用。
我编写了这段代码,但出现编译错误:
fun balanceAux(s:string , i:int , c1:int , c2:int) : bool =
if i = size(s)-1 then
if c1=c2 then true
else false
else
if c2>c1 then false
else
if (str(String.sub(s,i)) = "(") then balanceAux(s,i+1,c1+1,c2)
else
if (str(String.sub(s,i)) = ")") then balanceAux(s,i+1,c1,c2+1);
else balanceAux(s,i+1,c1,c2);
fun balance(t:string) : bool =
balanceAux(t,0,0,0);
我收到 3 个编译错误:
插入 LPAREN
插入 LET
在 EOF 发现
任何想法我做错了什么?我读到它可能与我的代码有关:
如果 A 则 B 否则如果 C 则 D
但我不明白我能做什么。
【问题讨论】: