小弟java新手
偶然在论坛上看到了一道面试题,题目如下:
问题: 如果给定的字符串从左到右和从右到左的序列完全一致,那么这样的字符串被称为 palindrome。例如,下面的字符串都是 palindromes。 "kayak" "codilitytilidoc" "neveroddoreven" 如果字符串A和字符串B含有相同的字母,但是顺序可能不一样,那么A被称为是B的anagram。例如,下面的字符串互为anagrams: A="mary" B="army" A="rocketboys" B="octobersky" A="codility" B="codility"
希望各位贴出自己的代码,下面是我写的,大家看看有问题么,希望大家改进。
package com.qustion;
import java.util.Arrays;
public class TestPalindrome {
/**
* @param args
* @author lohasle
* @time 2012/03/19
*/
// 判断 s的某种anagram是palindrome
public int isAnagramOfPalindrome(String str) {
char[] ch = splitString(str);
if (str != null) {
int[] sata = totalSee(ch);
if (sata[1] > 1) {
return 0;
} else {
if (sata[0] % 2 == 0||sata[1]==1) {
return 1;
} else {
return 0;
}
}
} else {
return 0;
}
}
// 拆分成字符数组 返回排好序的字符数组 为之后的遍历查找 赋值做准备
public char[] splitString(String str) {
int len = str.length();
char[] ch = new char[len];
for (int i = 0; i < len; i++) {
ch[i] = str.charAt(i);
}
for (int i = 0; i < ch.length - 1; i++) {
int minPos = i;// 记录最小的位置
for (int j = i + 1; j < ch.length; j++) {
if (ch[j] < ch[minPos]) {
minPos = j;
char temp = ch[minPos];
ch[minPos] = ch[i];
ch[i] = temp;
}
}
}
return ch;
}
// 统计相同的字母将它设值为一 统计相同字母出现的
public int[] totalSee(char[] ch) {
int len = ch.length;
int resultCountSame = 0;// 计算相同字母出现的总得次数
int countNoSame = 0;// 独立字母的总个数
int countSame = 1;//每一次查找 获得的相同字母总次数之和 不包括开头的哪一位
int[] a = new int[2];// 统计相同字母的总个数 和 独立字母的总个数
for (int i = 0; i < len; i+=countSame) {
for (int j = i + 1; j < len; j++) {
if (ch[j] !='1') {
if (ch[i] == ch[j]) {
countSame++;
ch[j] = '1';// 计算完之后 为了统计别 的字母 将值1作为标志
} else {
continue;
}
}
}ch[i] ='1';//这里是开始计算的首字母
}
for(int i = 0;i<len;i++){
if(ch[i]=='1'){
resultCountSame++;
}else{
countNoSame++;
}
}
a[0] = resultCountSame;
a[1] = countNoSame;
return a;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
* String str = "aasasasaaa"; TestPalindrome te = new TestPalindrome();
* System.out.println(Arrays.toString(te.splitString(str)));
* System.out.println(Arrays.toString(str.split("a")));
*/
TestPalindrome te = new TestPalindrome();
String testStr = "kayak";
int result = te.isAnagramOfPalindrome(testStr);
System.out.println(result);
}
}
分享到:
相关推荐
为了在Java面试中脱颖而出,了解和掌握常见的面试题及答案至关重要。以下是一些关键知识点的详细解析: 1. **super()与 this()的区别** `super()`用于调用父类的构造器,确保子类实例化时父类的初始化;`this()`则...
以下是对标题和描述中涉及的一些常见Java面试题的详细解释: 1. **JDK 和 JRE 的区别** JDK(Java Development Kit)是用于开发和调试Java程序的完整工具集,包括JRE(Java Runtime Environment)、编译器(javac...
【Java笔试题解析】 在2020年兴业银行的Java笔试中,涉及了多个核心的Java编程和技术概念。以下是对部分题目进行的详细解答: 1. 输入一个正整数,计算并输出距离它最近的对称数 对称数是指从左向右读和从右向左...
【神州数码Java笔试题解析】 在Java开发领域,面试和笔试是评估候选人技术能力的重要环节。神州数码作为知名的IT企业,其Java笔试题通常涵盖了Java基础、面向对象编程、集合框架、多线程、异常处理、JVM内存模型、...
最新JAVA面试题总结之基础/框架/数据库/JavaWeb/Redis BIO,NIO,AIO,Netty面试题 35道 BTA 常问的 Java基础39道常见面试题及详细答案 Dubbo面试题 47道 ElasticSearch面试题 30道 Git常用命令面试题 60道 Java并发...
java面试资料java面试题集java笔试题汇总资料,java面试资料java面试题集java笔试题汇总资料,java面试资料java面试题集java笔试题汇总资料,包括基础面试题、JavaWeb面试题、JAVA面试题集.txt、分布式相关面试题...
Java 10万字总结java面试题和答案 其包含的内容模块有:基础、JVM、多线程与高并发、Spring、MyBatis、SpringBoot、MYSQL、SpringCloud、Dubbo、Nginx、MQ、数据结构与算法、Linux、Zookeeper、Redis、分布式、网络...
Java面试通常涵盖多个方面,包括Java基础知识、编程技能、问题解决能力,以及对Java生态系统和相关技术的理解。以下是一些建议的Java面试准备要点和资源描述: 一、Java基础知识 数据类型、变量与运算符:理解Java...
"2017java面试题"这个压缩包文件提供了丰富的资源,帮助Java开发者准备面试,深化对Java开发的理解。 文档"Java面试宝典2017.doc"可能包含了以下核心Java知识点: 1. **基础语法**:这包括变量、数据类型、运算符...
【标题】"农行Java笔试题"涉及到的Java知识点涵盖了编程基础、面向对象特性、集合框架、多线程、异常处理、IO流、网络编程、数据库操作等多个领域,这些都是Java程序员必须掌握的核心技能。 首先,从编程基础角度来...
以下是一份关于“Java 面试题面经”付费资源的简介: 准备进军 Java 开发领域?正在为 Java 面试焦虑不安?这份“Java 面试题面经”付费资源将成为你的致胜法宝! 资源亮点: - **全面覆盖**:涵盖 Java 基础、...
Java面试题.zip 个人整理的java面试题,非喜勿喷。 Java面试题.zip 个人整理的java面试题,非喜勿喷。Java面试题.zip 个人整理的java面试题,非喜勿喷。Java面试题.zip 个人整理的java面试题,非喜勿喷。Java面试...
本文将基于标题“Java面试题和练习题”以及描述中提到的内容,深入探讨Java相关的面试题和练习题,旨在帮助求职者或希望提升技能的开发者巩固知识,准备面试。 一、Java基础 1. Java的数据类型:了解Java的八种...
这里我们将根据"Java面试题全集(上)(中)(下)合集"来探讨这些核心知识点。 1. **基础语法**:这部分通常考察Java的基本数据类型、变量、运算符、流程控制(if,switch,for,while,do...while)、方法的定义...
这份“java面试题汇总”合集包含超过100个题目,涵盖了Java的基础知识、进阶概念以及实战经验,旨在帮助求职者准备Java相关的面试和笔试。 首先,基础部分包括了对Java语法的理解,如变量、数据类型、运算符、流程...
JAVA面试题,总结了常见的一些面试题目,供大家参考!
十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA...