假如你想写一个小程序,保证字符串首尾两个字符是一样的,你可以如下实现:
public static boolean isPalindrome(String string) {
for (int forward = 0, backward = string.length() - 1; forward < string
.length(); forward++, backward--)
if (string.charAt(forward) != string.charAt(backward))
return false;
return true;
}
另一种方法,性能好一些,但可读性差一些,如下:
public static boolean isPalindrome(String string) {
if (string.length() == 0)
return true;
int limit = string.length() / 2;
for (int forward = 0, backward = string.length() - 1; forward < limit; forward++, backward--)
if (string.charAt(forward) != string.charAt(backward))
return false;
return true;
}
看一下agile java一书其中的一段话,值得思考:
引用
"While normally you shouldn't worry about performance until it is a problem, an algorithm should be clean. Doing something unnecessarily in an algorithm demonstrates poor understanding of the problem. It can also confuse future developers"
下面是测试的代码:
public void testPalindrome() {
assertFalse(isPalindrome("abcdef"));
assertFalse(isPalindrome("abccda"));
assertTrue(isPalindrome("abccba"));
assertFalse(isPalindrome("abcxba"));
assertTrue(isPalindrome("a"));
assertTrue(isPalindrome("aa"));
assertFalse(isPalindrome("ab"));
assertTrue(isPalindrome(""));
assertTrue(isPalindrome("aaa"));
assertTrue(isPalindrome("aba"));
assertTrue(isPalindrome("abbba"));
assertTrue(isPalindrome("abba"));
assertFalse(isPalindrome("abbaa"));
assertFalse(isPalindrome("abcda"));
}
分享到:
相关推荐
Java右键弹出菜单源码 简单 Java圆形按钮实例代码,含注释 两个目标文件,自绘button。 Java圆形电子时钟源代码 1个目标文件 内容索引:JAVA源码,系统相关,电子钟 用JAVA编写的指针式圆形电子钟,效果图如下所示,...
诸如GPS、加速计和触摸屏等外观时尚且用途广泛的手机功能硬件,正在吸引越来越多的开发者创建各种新颖有趣的移动应用程序。 虽然设计Android硬件的目的是为了吸引消费者,但是真正的赢家却是开发人员。由于现有的...
内容概要: 这段Java代码实现了一个简单的水果猜猜猜游戏。游戏有两名玩家,每回合玩家选择一个水果并处理。...这是一个简单而有趣的Java控制台游戏示例,可以用于学习基本的Java编程概念和逻辑。
例如,利用本书的几段代码编写程序是不需要许可的。售卖或出版O扲eilly书中示例的D-ROM需要我们的许可。引用本书回答问题以及引用示例代码不需要我们的许可。将本书的大量示例代码用于你的产品文档中需要许可。
而假如你真的因为我的书而重新燃起实践的热情,从而开始一段操作系统旅程,我将会感到非常高兴。 不过我得坦白,在写作《自己动手写操作系统》的时候,我并不敢期待它能引起多少反响,一方面因为操作系统并不是时尚...
而假如你真的因为我的书而重新燃起实践的热情,从而开始一段操作系统旅程,我将会感到非常高兴。 不过我得坦白,在写作《自己动手写操作系统》的时候,我并不敢期待它能引起多少反响,一方面因为操作系统并不是时尚...
这是一种简单而有趣的方式来利用C语言进行图形化的表达。 我们将使用一个二维数组来代表我们的玫瑰花。每个元素代表一朵花瓣的位置,我们用'1'来表示花瓣,用'0'来表示没有花瓣。通过间接与操作,我们可以控制花瓣...
这是一款有趣又益智的游戏,是我学完C++时我们寝室晚上合作写的,可以培养游戏者的逻辑推理能力,适合各种年龄段的人玩。 该游戏原本是我读本科时在宿舍里和同学一起玩的。需要两人以上合作,互相布局互相“开炮”...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
随着时间的推移,我将定期向此存储库中添加有趣的代码段。 示例1-设置页面和可重用组件 关于这个样本 这是两个文件夹的小样本,其中包含使用的React / Redux项目中的许多可重用组件。 尽管此代码片段并未深入到...
前段时间在竞品小红书上看到了这样的效果:图片可以跟随手指移动,双指可以(无限)放大,缩小,还可以挤压,手指抬起后还有一个有趣的效果,图片回弹。。。一直想撸一个手势的控件,正好可以模仿小红书图片裁剪控件...
1.5 剖析一个简单的程序 6 1.5.1 注释 6 1.5.2 预处理指令 7 1.5.3 定义main()函数 7 1.5.4 关键字 8 1.5.5 函数体 8 1.5.6 输出信息 9 1.5.7 参数 10 1.5.8 控制符 10 1.6 用C语言开发程序 12 1.6.1 ...
我出于对居家中Wi-Fi信号的好奇心而编写了这段代码。 方法 信号源是路由器,功率水平由于距离和墙壁而下降。 距离r引起的功率下降可通过以下公式计算: 您可以简单地减去由于墙壁造成的功率损耗。 墙壁具有不同的...
因为在这段做决定时间里,我不再受雇于任何人,我想可以写一些专业性的东西,一些很有趣,但也会在同事和管理工作中导致关系紧张的东西。 在上一篇文章中提到过,我已经不在Google工作了。我还没有想清楚应该去...
为什么这段代码如此丑陋? 真是个好问题! 编写此代码是为了提高可读性-在不需要Java知识的演示中使用它。 因此,我并不想成为最佳或浮华的人-我只需要代码即可工作,并且对没有JS经验的人来说很清楚。 要记住: 1....
JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...
下面一段代码: 代码 $(document).ready(function(){ alert("hello"); });(1) <body>(2) <body>这里的alert('hello');要等到页面全部加载完毕才执行,注意是全部加载,包括dom,图片等...
JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...
对软件而言,逆向工程归结起来就是拿一个既没有源代码又没有准确文献资料的现成程序,尝试恢复出它的设计和实现细节。在某些情况下,可以找到程序的源代码,但是找不到最初的开发人员了。本书所讨论的就是通常所说的...