一、简介代码功能

  该代码的功能可以实现对任意的一段字符串进行判断是否有回文,回文有哪些,和其中的最大回文。

二、代码部分

1、全局变量

   static String hws = "";
static int num = ;
static String[] hw;

2、创建数组用于保存回文

   /**
* 创建数组保存所有的回文
*
* @return 返回一个String类型的数组
*/
public static String[] createHw() {
return new String[num];
}

3、将hws字符串更改为空字符

     /**
* 将hws字符串更改为空字符
*/
public static void hwsClose() {
hws = "";
}

4、判断该字符串中存在的回文的数量

     /**
* 判断该字符串中存在的回文的数量
*
* @param c
* 数组c ,c是用户输入的字符串转换为单个字符组成的数组
* @return
*/ public static int judgeNumber(char[] c) {
for (int i = 0; i < c.length - 1; i++) {
if (c[i] == c[i + 1]) {
num++;
}
}
return num;
}

5、第一次判断字符串中前后的数是否存在相同

     /**
* 第一次判断字符串中前后的数是否存在相同
*
* @param c
* 数组c ,c是用户输入的字符串转换为单个字符组成的数组
*/ public static void judge(char[] c) {
judgeNumber(c);
if (num != 0) {
hw = createHw();
for (int i = 0; i < c.length - 1; i++) {
if (c[i] == c[i + 1]) {
hws = hws + c[i];
judge2(c, i, i + 1);
hw[--num] = hws;
hwsClose();
}
}
} else {
System.out.println("该字符串没有回文");
}
}

6、进行二次判断以当前相同的字符为起点,分别以前下标向前和该后下标向后进行比较()

   /**
* 进行二次判断以当前相同的字符为起点,分别以前下标向前和该后下标向后进行比较()
*
* @param c
* 数组c ,c是用户输入的字符串转换为单个字符组成的数组
* @param i
* 数组前一个下标,该下标和后一个进行比较并且相同
* @param k
* 数组后一个下标,该下标和前一个进行比较并且相同
*/ public static void judge2(char[] c, int i, int k) {
if (i - 1 >= 0 && k + 1 < c.length) {
if (c[i - 1] == c[k + 1]) {
hws = hws + c[i - 1];
judge2(c, i - 1, k + 1);
}
}
}

7、输出所得的回文

   /**
* 获取所得的回文
*
* @param c
* 数组c ,c是用户输入的字符串转换为单个字符组成的数组
*/ public static void outPalindrome(char[] c) {
judge(c);
if (hw!=null) {
for (int i = 0; i < hw.length; i++) {
System.out.println(reverse(hw[i])+hw[i]);
}
} else {
System.out.println("没有回文2");
}
}

8、将最长的回文输出

   /**
* 将最长的回文输出
*
*/ public static void longestPalindromes() {
String longest = null;
if (hw!=null) {
if (hw.length == 1) {
System.out.println(reverse(hw[0])+hw[0]);
} else {
for (int i = 0; i < hw.length - 1; i++) {
for (int j = 0; j < hw.length - 1 - i; j++) {
if (hw[j].length() > hw[j + 1].length()) {
longest = hw[j + 1];
hw[j + 1] = hw[j];
hw[j] = longest;
}
}
}
for (int i = 0; i < hw.length - 1; i++) {
if (hw[hw.length - 1].length() == hw[hw.length - i - 1].length()) {
System.out.println(reverse(hw[hw.length - i - 1])+hw[hw.length - i - 1]);
}
}
}
} else {
System.out.println("没有回文3");
}
}

9、将字符串进行倒序

   /**
* 将字符串进行倒序
* @param string 将要被倒序的字符串
* @return 返回倒序后的字符串
*/ public static StringBuffer reverse(String string){
StringBuffer sb=new StringBuffer();
char a;
for(int i=0;i<string.length();i++){
a=string.charAt(string.length()-1-i);
sb.append(a);
}
return sb;
}

10、测试代码

 public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
String s = sc.next();
char[] c = s.toCharArray();
System.out.println("--------输出所有的回文------");
outPalindrome(c);
System.out.println("--------输出最长的回文------");
longestPalindromes();
10   }

三、测试结果

1、输入数据:123

结果图:

2、输入数据:123321qwwqaartyuuytr1

结果图:

3、输入数据:123321qweewqasddsazxxzssgh31

结果图:

Java 判断回文字符串有多少和其中的最大字符串的更多相关文章

  1. Java判断回文数算法简单实现

    好久没写java的代码了, 今天闲来无事写段java的代码,算是为新的一年磨磨刀,开个头,算法是Java判断回文数算法简单实现,基本思想是利用字符串对应位置比较,如果所有可能位置都满足要求,则输入的是 ...

  2. Java——判断回文

    package basic; import java.util.Scanner; public class Palindrome{ public static boolean isPalindrome ...

  3. java判断回文数

  4. 判断回文字符串、回文链表、回文数(python实现)

    所谓回文字符串,就是正读和反读都一样的字符串,比如"level"或者"noon"等等就是回文串.即是对称结构 判断回文字符串 方法一: def is_palin ...

  5. 判断回文字符串(c,python)

    回文字符串:一个字符串,不论是从左往右,还是从右往左,字符的顺序都是一样的(如abba,abcba等) 判断回文字符串比较简单,即用两个变量left,right模仿指针(一个指向第一个字符,一个指向最 ...

  6. HDOJ/HDU 2163 Palindromes(判断回文串~)

    Problem Description Write a program to determine whether a word is a palindrome. A palindrome is a s ...

  7. C语言 · 判断回文

    算法提高 判断回文   时间限制:1.0s   内存限制:512.0MB      编程判断一个字符串是否是回文,当字符串是回文时,输出字符串:yes!,否则输出字符串:no!.所谓回文即正向与反向的 ...

  8. [leetcode]125. Valid Palindrome判断回文串

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...

  9. C 语言实例 - 判断回文数

    C 语言实例 - 判断回文数 判断一个数是否为回文数. 设n是一任意自然数.若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数.例如,若n=,则称n为一回文数:但若n=,则n不是回文数 ...

随机推荐

  1. Git的简单安装

    git 的安装及源代码上传 首先去官网把git下载好,这里给大家提供个官网下载地址 https://git-scm.com/downloads 安装完成后,在开始菜单里找到“Git”->“Git ...

  2. Kubernetes 1.5安装

    Kubernetes从1.3开始引入kubeadm来试图简化其复杂的安装.但kubeadm至今仍不稳定,而且我个人觉得kubeadm反而麻烦,还不如直接用脚本或者其他自动化工具来安装来的利索.关于ku ...

  3. 3223: Tyvj 1729 文艺平衡树

    3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1347  Solved: 724[Submit][Stat ...

  4. 雪花降落CAEmitterLayer粒子效果

    CAEmitterLayer 实现雪花效果   首先需要导入#import <QuartzCore/QuartzCore.h>   /**在iOS 5中,苹果引入了一个新的CALayer子 ...

  5. H5 Bgsound

    Bgsound ■ 摘要 项目 说明 形式 <bgsound src="..."> 支持 e2+ 标签省略 开始标签:必须,结束标签:无 ■ 说明 bgsound 是 ...

  6. 构建微服务-使用OAuth 2.0保护API接口

    微服务操作模型 基于Spring Cloud和Netflix OSS 构建微服务-Part 1 基于Spring Cloud和Netflix OSS构建微服务,Part 2 在本文中,我们将使用OAu ...

  7. HTML5 移动页面自适应手机屏幕四类方法

    1.使用meta标签:viewport H5移动端页面自适应普遍使用的方法,理论上讲使用这个标签是可以适应所有尺寸的屏幕的,但是各设备对该标签的解释方式及支持程度不同造成了不能兼容所有浏览器或系统. ...

  8. web注册功能实现

    开发工具:Eclipse Web前端语言:html+jsp 后端数据库:MySQL 数据库UI工具:Navicat for MySQL (根据网上各位前辈的信息,自学实现这个注册基本功能,以后要是学到 ...

  9. ubuntu如何进入local、bin目录

    回到home目录,输入命令:cd /usr/local 若要进入bin目录,输入命令:cd /usr/local/bin

  10. calendar.js(日历组件封装)

    最近一直闲来无事,便寻思着做一下自己的个人项目,也想说能使用现在比较流行的一些mvvm框架来做,于是就选用了这样的一个技术栈vue2.0+vue-router+vuex+webpack来做,做得也是多 ...