`
crackajack_zg
  • 浏览: 52908 次
社区版块
存档分类
最新评论

回文字符串

 
阅读更多


package com.mytest;

import java.util.Iterator;
import java.util.HashMap;
import java.util.Set;

public class Main {
	public static int palindrome(String s) {
		return 0;
	}


    //start 提示:自动阅卷起始唯一标识,请勿删除或增加。 
	HashMap<String, Integer> map = new HashMap<String, Integer>();
	public static void main(String args[]) {
		// 输入字符串

		String str = "aabb";
		char[] charArray = str.toCharArray();
		Main m = new Main();
		m.palind(charArray, 0, charArray.length - 1);

		Set<String> a = m.map.keySet();
		Iterator<String> it = a.iterator();
		int index = 0;

		long totalCount = 0l;
		while (it.hasNext()) {
			String key = it.next();
			totalCount = totalCount + m.map.get(key);

		}
		System.out.println("total count:"+totalCount);
	}
    //end //提示:自动阅卷结束唯一标识,请勿删除或增加。

	private void palind(char[] charArray, int index, int end) {

		if (index == end) {
			// 检查是否为回文字符串,如果是则输出
			checkStr(charArray);
		} else {
			// 递归产 生全排列排列
			for (int i = index; i <= end; i++) {
				char temp = charArray[index];
				charArray[index] = charArray[i];
				charArray[i] = temp;

				palind(charArray, index + 1, end);

				temp = charArray[index];
				charArray[index] = charArray[i];
				charArray[i] = temp;

			}

		}

	}

	private void checkStr(char[] charArray) {
		for (int i = 0; i < charArray.length / 2; i++) {

			if (charArray[i] == charArray[charArray.length - 1 - i]) {
				continue;
			} else {
				return;
			}
		}
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < charArray.length; i++) {

			sb.append(charArray[i]);

		}
		String str = sb.toString();
		// 放到map里面
		map.put(str, map.get(str) == null ? 1 : map.get(str));
	}
	// end //提示:自动阅卷结束唯一标识,请勿删除或增加。

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics