最长回文,没有效率的

package com.comp.string;

import java.util.*;

/*
 * w aa bwsw f d 
 */
public class LHWSTR {

	/*
	 * 采用递归实现
	 */
	public static String getLC(char[] test) {
		int length = test.length;

		return getLCC(test, 0, length - 1);
	}

	public static String getLCC(char[] test, int start, int end) {
		if (start < end) {
			if (check(test, start, end))
				return new String(test, start, end - start + 1);
			String str1 = getLCC(test, start + 1, end);
			String str2 = getLCC(test, start, end - 1);
			if (str1.length() > str2.length())
				return str1;
			else
				return str2;
		} else {
			return new String();
		}

	}

	public static boolean check(char[] test, int start, int end)

	{

		while (start < end) {

			if (test[start] == test[end]) {

				start++;
				end--;
				continue;
			}
			return false;
		}
		return true;
	}

	/*
	 * 采用回文中间点进行考察
	 */
	public static String getLCS(char[] test) {
		int length = test.length;
		int start = 0;
		int end = length - 1;
		List<String> lstr = new ArrayList<String>();
		List<String> rstr = new ArrayList<String>();

		/*
		 * 首先考虑最后的最大结果是奇数个回文,i不用考虑匹配
		 */
		for (int i = 0; i < length; i++) {
			int j = i - 1;
			int k = i + 1;

			while (start <= j && end >= k) {

				if (test[j] != test[k])
					break;
				j--;
				k++;

			}
			if ((j + 1) >= start && (k - 1) <= end)

				lstr.add(new String(test, j + 1, k - j - 1));

		}
		Iterator iter = lstr.iterator();
		int max = 0;
		String maxString = new String();
		while (iter.hasNext()) {
			String str = (String) iter.next();
			if (str.length() > max) {
				max = str.length();
				maxString = str;
			}
			

		}
		/*
		 * 考虑最后的结果是是偶数个回文
		 */
		for (int i = 0; i < length; i++) {
			int j = i;
			int k = i + 1;
			while (start <= j && end >= k) {
				if (test[j] != test[k])
					break;
				j--;
				k++;
			}
			if ((j + 1) >= start && (k - 1) <= end)

				lstr.add(new String(test, j + 1, k - j - 1));

		}
		Iterator iter2 = rstr.iterator();
		while (iter2.hasNext()) {
			String str = (String) iter2.next();
			if (str.length() > max) {
				max = str.length();
				maxString = str;
			}
			
		}
		return maxString;
	}

	public static void main(String args[]) {
		char[] test = { 'w', 'a', 'a', 'b', 'w', 's', 'w', 'f', 'd' };

		System.out.println(LHWSTR.getLCS(test));
	}

}

电子时钟设计是一个基于单片机的综合性电子项目,涵盖硬件设计、软件设计、模块代码编写以及运行展示等多个环节。以下是该项目的详细分析与知识点总结: 电子时钟设计是一项课程设计任务,目标是开发一个功能完善的电子时钟系统。该系统以单片机为核心控制器,具备时间显示、设置和控制等功能,旨在满足用户的日常使用需求。 硬件设计的核心是系统方案原理图,它明确了系统的整体架构以及各组件之间的连接关系。外设设计方面,键盘输入模块和数码管显示模块是关键部分。键盘输入模块的工作原理包括键盘扫描、按键识别以及状态机控制等环节;数码管显示模块的工作原理则涉及数码管的驱动、显示控制和状态机控制等内容。 软件设计的核心是项目软件系统总架构图,它详细介绍了系统的软件框架,涵盖单片机编程、键盘输入模块流程图与代码、数码管显示模块流程图与代码等方面。顺序图则展示了软件的运行流程,包括系统初始化、键盘输入处理、显示控制和状态机控制等环节。 模块代码是系统各模块功能的具体实现。例如,键盘输入模块的代码实现了键盘扫描、按键识别和状态机控制等功能;数码管显示模块的代码实现了数码管驱动、显示控制和状态机控制等功能。 运行展示是项目的最终成果呈现环节,展示了电子时钟的实际运行效果,包括时间的准确显示、便捷的设置操作以及稳定的控制功能等。 单片机原理:掌握单片机的架构、指令系统和编程方法。 Proteus仿真:熟悉Proteus仿真原理、仿真环境及仿真操作。 C语言编程:理解C语言的语法、数据类型、控制结构、函数和数组等基础知识。 电子时钟设计:了解电子时钟的工作原理、设计方法和实现技术。 硬件设计:掌握硬件设计的基本原理、方法和工具。 软件设计:熟悉软件设计的基本原理、方法和工具。 模块代码实现:掌握模块代码的设计、编程和调试技巧。 电子时钟设计项目融合了硬件与软件设计,通过模块代码实现功能,并通过运行展示呈现最终效果。掌握
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值