回文问题

阅读更多
/**
		 * 最大长颠倒字符串 它的长度应该小于等于整个字符串(长度为L)的的一半 从假设最大颠倒长度为整个的1/2L
		 * 然后查这个长度的颠倒字符串是否存在 存在就返回,不存在,则继续往下找1/2L-1,以此类推1/2L-1....一直到0。如果为0说明没有
		 * 
		 */

		String string = "a123ghfuhg321asd131";
		// String revString=getLongString(string);
		int maxStr = string.length() / 2;
		int len = string.length();
		String revString = null;
		boolean flag = false;
		for (int i = maxStr; i >= 0; i--) {
			for (int j = 0; j < len; j++) {
				if ((j + i + 1) > (len - 1))
					continue;
				String subString = string.substring(j, j + i + 1);
				revString = new StringBuffer(subString).reverse().toString();
				int flag1 = string.indexOf(revString);
				if (flag1 != -1) {
					flag = true;
					System.out.println(subString + ":" + revString + ";" + i);
					break;
				}
			}
			if (flag)
				break;
		}

 

你可能感兴趣的:(回文问题)