`
lighter
  • 浏览: 500286 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

有趣而简单的两段代码

阅读更多
假如你想写一个小程序,保证字符串首尾两个字符是一样的,你可以如下实现:
	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"));
}
分享到:
评论
1 楼 ansili 2007-10-21  

相关推荐

    有趣的循环 代码

    在编程世界中,循环是一种非常基础且重要的控制流结构,用于重复执行一段代码,直到满足特定条件为止。在这个“有趣的循环代码”问题中,我们被挑战去寻找一种方法,将1到9这九个数字分成三个3位数,使得第一个3位数...

    c++生日歌代码

    在探讨“C++生日歌代码”这一主题时,我们不仅会深入分析代码的结构与功能...通过深入剖析这段代码,我们可以更好地理解如何利用编程语言创造有趣且实用的应用,同时激发对计算机科学和艺术交叉领域的好奇心与探索欲。

    一段女生写的C语言代码(搞笑) - -

    这段代码将现实生活中的一些情况用程序逻辑的形式表现出来,虽然语法上不符合标准的C语言规范,但确实能让我们从中提炼出一些有趣的IT概念与编程基础知识。 ### 代码结构分析 #### 1. 包含头文件 ```c #include ...

    好玩的python程序的实现(有注释,80多个)

    5. **函数**:Python中函数是一段可重用的代码块。程序可能展示如何定义函数、传递参数、返回值以及使用内置函数如range()、len()等。 6. **文件操作**:学习读写文件是Python编程中的重要一环。程序可能包含如何...

    小球移动的简单代码参考

    这段代码让物体围绕x、y、z轴分别以15度、30度、45度每秒的速度旋转,其中`Time.deltaTime`确保旋转速度不受帧率的影响。 - **移动脚本 BallMove**:根据键盘输入控制小球的移动方向。 ```csharp void Update() ...

    这是一份关于arduino蜂鸣器音乐代码

    这段代码中包含了两个主要部分: - **音乐播放**:通过`for`循环遍历`melody[]`数组中的每一个元素,并使用`tone()`函数播放相应的音符。每个音符播放后,会有500毫秒的停顿,这样可以让音乐听起来更加清晰。 - **...

    C语言的简单圣诞树代码

    这段代码首先定义了树的高度变量`height`,并从用户那里接收输入。然后,外层的`for`循环按高度迭代,内层的两个`for`循环分别处理空白和星号的输出。当达到最大高度时,额外打印一个星号表示树顶。 这个简单的圣诞...

    JAVA上百实例源码以及开源项目源代码

    Java右键弹出菜单源码 简单 Java圆形按钮实例代码,含注释 两个目标文件,自绘button。 Java圆形电子时钟源代码 1个目标文件 内容索引:JAVA源码,系统相关,电子钟 用JAVA编写的指针式圆形电子钟,效果图如下所示,...

    非常经典asp小代码

    这两段代码定义了两个函数,用于控制HTML页面中层(layer)的可见性。`show`函数让层可见,而`hidden`函数则让层隐藏。这些函数通常与事件监听器结合使用,以便在特定条件下显示或隐藏元素。 ### 总结 以上知识点...

    C语言 心型代码

    这段代码利用了简单的循环结构和条件判断,结合心形方程的基本原理,在控制台上绘制出了一个心形图案。它不仅展示了如何使用C语言进行图形输出,还体现了数学与编程相结合的魅力。通过理解这段代码的工作原理,读者...

    python+万圣节代码.pdf

    8. **异常处理**:虽然这段代码没有显式地使用异常处理,但要注意在实际应用中,为了增强代码的健壮性,可以考虑添加错误处理机制,比如检查用户输入是否为有效单词,防止程序因非法输入而崩溃。 9. **字符串比较**...

    组字游戏 C语言实现 简单代码

    【组字游戏 C语言实现 简单代码】 在编程世界中,开发一款游戏是学习新语言或技术的有趣方式。本项目是一个基于C语言的简单组字游戏,旨在帮助初学者理解C语言的基本语法、控制结构以及字符串操作。下面我们将深入...

    12个有趣的C语言面试题

    答案:因为main()方法的返回类型,这段代码的错误在大多数编译器里会被当作警告。main()的返回类型应该是“int”而不是“void”。因为“int”返回类型会让程序返回状态值。这点非常重要,特别当程序是作为依赖于程序...

    VB代码整人,实用。几个有趣的希望有帮助!!.doc

    这段代码会在打开时弹出一系列对话框,不断地向用户展示信息,同时阻止他们访问任务管理器来结束这个程序。在VBScript中,`Form_Load`是窗体加载时执行的事件。代码首先打开了系统目录下的任务管理器(taskmgr.exe)...

    趣味编程C语言——C语言经典示例代码

    文档“535个C语言经典实例目录.doc”可能包含了每个实例的简短描述,而“535个C语言经典实例源代码”则提供了实际的代码供学习者实践和分析。通过这样的实践,学习者不仅能够加深对C语言的理解,还能培养解决问题和...

    8套 程序员表白代码

    总的来说,“程序员表白代码”不仅仅是一段简单的程序,它体现了程序员的个性和创新精神,将技术与情感完美融合,为传统的表白方式注入了新的活力。无论是通过视觉呈现还是交互体验,这些代码都展示了程序员的用心和...

    c语言表白代码

    除了上述C语言的基础知识点外,这段代码还展示了如何构建一个简单的交互式程序。通过连续的`printf()`和`getchar()`调用,程序能够呈现一段故事性的对话,引导用户进行输入,同时根据用户的输入做出反应。例如,当...

    python草莓熊代码.pdf

    例如,我们可以通过`fillcolor()`来改变填充颜色,`begin_fill()`和`end_fill()`组合使用来填充图形,`seth(angle)`来设置Turtle对象的方向,`forward(distance)`让Turtle向前移动一段距离。 此外,turtle库支持...

    简单插入排序 递归法——C语言代码

    递归通常涉及到分治策略,即将问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。 在"简单插入排序 递归法——C语言代码"这个项目中,我们将看到如何使用...

    程序员向妹子表白专用代码.zip

    除此之外,文件名暗示了这是一段专为表白而准备的代码,可能包含一个互动的网页应用。这可能是一个简单的HTML和CSS页面,加上JavaScript的交互逻辑,当妹子打开时,会播放一段动人的音乐,展示一行行深情的告白语句...

Global site tag (gtag.js) - Google Analytics