【发布时间】:2014-02-06 00:44:07
【问题描述】:
我们都知道如何使用正则表达式在字符串中查找内容。但是,至少在数学上,正则表达式不仅限于实际的Strings 和char[]s;可以使用正则表达式来匹配int[] 中的子序列。但是,我似乎找不到任何关于使用非字符字符串的正则表达式。有没有人知道这样的事情?
这主要是受到CodingBat 等网站上出现的大量“数组子序列”类型问题的启发。通常,我会将数组转换为字符串,以便可以在其上使用正则表达式,例如我对Java > Warmup-2 > noTriples 的解决方案是
return Arrays.toString(nums).split("(\\d*+), \\1, \\1(?!\\d)").length == 1;
(我喜欢打高尔夫球)。
我考虑过做类似的事情
return new String(nums,0,nums.length).split("(.)\\1\\1").length == 1;
(确实有效),但不能使用文字值(例如,编译器将拒绝其中包含\u0000-\u001F 的任何程序,除了一对),此外还有其他问题。
有人知道直接对整数数组进行模式匹配的方法吗?(使用某种正则表达式,甚至使用更受限制的语言?)
【问题讨论】:
-
那么转换为字符串并使用正则表达式有什么问题?它不能解决问题吗?我能想到的其他方法是使用嵌套循环。
-
转换为字符串效率低下并且可能会被欺骗(例如,字符串数组可能在某些字符串中包含分隔符)