目标:任何语言。返回一个字符串是否为回文的最小函数。这是我用Python写的代码:
R=lambda s:all(a==b for a,b in zip(s,reversed(s)))
50个字符。
被接受的答案将是当前最小的 - 随着发现更小的答案,这将会改变。请指定您的代码所使用的编程语言。
R=lambda s:all(a==b for a,b in zip(s,reversed(s)))
50个字符。
被接受的答案将是当前最小的 - 随着发现更小的答案,这将会改变。请指定您的代码所使用的编程语言。
JavaScript: 55个字符
p=function(x){return (x==x.split('').reverse().join())}
上述代码无法正常工作,因为你需要使用""
调用join
函数。
JavaScript: 55个字符
function p(s){return s==s.split("").reverse().join("")}
标准 ML(34个字符且乏味):
fun p s=s=implode(rev(explode(s)))
C语言,68个字符,无库:
p(char *s){char *e=s;while(*++e);for(;*s==*--e&&s++<e;);return s>e;}
F#: 29个字符
let p(s:string)=s=s.Reverse()
(假设已导入System.Linq)
不可能的语言,假设字符串使用普通参数传递:
;~=
3个字符
在Python中有58个字符,而不需要反转字符串:
r="y" for i in range(len(s)): if(s[i]!=s[-i-1]): r="n"
也许可以优化for循环?我对Python还不熟悉...
使用递归lambda函数而不使用Reverse
函数的C#代码(115个字符):
Func<string,bool>p=null;p=w=>{if(w.Length<2)return true;return w[0]==w[w.Length-1]&&p(w.Substring(1,w.Length-2));};
虽然不是最小的,但我仍然想添加一个条目:
sub p{return @_==reverse split//;}
我对Perl有点生疏,而且这还没有经过测试。
Java,不使用反转:
boolean p(String s){int i=0,l=s.length();while(i<l){if(s.charAt(i++)!=s.charAt(--l))l=-1;}return l>=0;
乔希的Java片段将每次返回true。