面试:java_统计字符串中对称的子字符串个数

原创 2013年12月01日 23:37:05

package com.isoftstone;

public class CountSubstrNum {

	public static int findSymmetryStr(String orgStr) {
		// 结果初始化
		int count = 0;
		// 当输入字符串不为null且长度大于1时进行查找,否则直接返回0
		if (orgStr != null && orgStr.length() > 1) {
			// 得到输入字符串的长度
			int size = orgStr.length();
			// 字符串的头字符索引
			int head;
			// 字符串从后向前遍历时的"尾"字符索引,即当前字符索引
			int current;
			// 字符串的头字符
			char hStr;
			// 字符串从后向前遍历时的"尾"字符
			char cStr;
			// 从前开始遍历字符串
			for (head = 0; head < size; head++) {
				// 取得头字符
				hStr = orgStr.charAt(head);
				// 指向输入字符串的最后
				current = size - 1;
				// 当尾字符索引等于头字符索引时退出循环
				while (current > head) {
					// 取得尾字符
					cStr = orgStr.charAt(current);
					// 如果头尾字符相等,则继续判断
					if (hStr == cStr) {
						// 取出头尾中间的子字符串,对其进行分析
						String newStr = orgStr.substring(head + 1, current);
						// 如果此子字符串的长度大于1,则进行递归
						if (newStr.length() > 1)
							// 递归得到此子字符串中对称的字符串个数
							count += findSymmetryStr(newStr);
						// 如果此子字符串只有1个或0个字符,则表明原头尾字符和此单个字符组成对称字符串
						else
							count++;
						// 将尾字符索引向前推1位
						current--;
					}
					// 如果头尾字符不相等,则将尾字符索引向前推1位
					else {
						current--;
					}
				}
			}
		}
		return count;
	}

	// 测试程序
	public static void main(String args[]) {
		int count = findSymmetryStr("abba");//
		System.out.println("对称子字符串的个数为: " + count);
	}

}

昨天去软通动力面试,面试官首先给我的就是算法题,题目如下:给出一个字符串,例如“abcddceffgfh”,要求统计输出对称的子字符串的个数。在此字符串中,对称的子字符串有dd,cddc,ff,fgf,所以输出的个数为4.</p><p>今天仔细回味,感觉自己当时写的算法是漏洞百出。重新在IDE环境下运行后的代码为:



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java判断对称数

public class Duichengshu { public static void main(String[] args)  { Boolean isOK1 = isDCNumb...

找出字符串中对称的子字符串的最大长度(最长回文)[No. 14]

背景: 所谓对称子字符串,就是这个子字符串要么是以其中一个词对称:比如 “aba”, “abcba”;要么就完全对称:比如"abba", "abccba"。 问题: 给你一个字符串,找出该字符串...

找出字符串中对称的子字符串的最大长度(最长回文)

转发:http://blog.csdn.net/beiyeqingteng/article/details/7097146 背景: 所谓对称子字符串,就是这个子字符串要么是以其中一个词...

找出字符串中对称的子字符串的最大长度(最长回文)

所谓对称子字符串,就是这个子字符串要么是以其中一个词对称:比如 “aba”, “abcba”;要么就完全对称:比如"abba", "abccba"。 问题: 给你一个字符串,找出该字符串中对称的子...

找出字符串中对称的子字符串的最大长度

闲来无事翻了翻之前的面试书,有一道题勾起了我的兴趣,题目如下: 输入一个字符串,输出该字符串中对称的子字符串的最大长度。 比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”...

【LeetCode-面试算法经典-Java实现】【003-Longest Substring Without Repeating Characters(最长非重复子字符串)】

【003-Longest Substring Without Repeating Characters(最长非重复子字符串)】给定一个字符串,找字符中的最大非重复子串用start记录当前处理的开始位置...

程序员面试100题之七:最长公共子字符串

子字符串的定义和子串的定义类似,但要求是连续分布在其他字符串中。比如输入两个字符串BDCABA和ABCBDAB的最长公共字符串有BD和AB,它们的长度都是2。       最长公共子字符串共有两种解决...

程序员面试100题之七:最长公共子字符串

转自:http://blog.csdn.net/hackbuteer1/article/details/6686931  子字符串的定义和子串的定义类似,但要求是连续分布在其他字符串中。比如输入...

PPTV面试算法思考-最长对称子字符串

题目最近在微信公众号里看看到了一个PPTV的面试算法题,感觉难度适中,想试下。题目的内容为求一个字符串的最长对称子字符串。如: 输入 输出 abba 4 abad ...

程序员面试100题之七:最长公共子字符串

转自:http://blog.csdn.net/hackbuteer1/article/details/6686931
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)