一、简介代码功能

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

二、代码部分

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. smarty模板基础1

    smarty模板的作用可以让前端和后端分离(也就是前端的显示页面和后端的php代码). smarty模板的核心是一个类,下载好的模板中有这么几个重要的文件夹 (1)libs核心文件夹(2)int.in ...

  2. 移动OA日程支持费用及评论

    业务介绍 AIO7系统最新更新版本在移动OA的日程管理进行改进,增加了创建费用的功能,且在日程批注上也可查看:在日程个人界面和批注界面都支持了评论功能.移动OA上日程对费用及评论的支持,方便用户外出时 ...

  3. Html5 基础----列表详述

    html5列表 标签 列表分为:  有序列表/无序列表/自定义列表,用的最多的为无序列表和自定义列表 1.有序列表(order list) eg:把

  4. 《你不知道的JavaScript》整理(五)——值与原生函数

    一.值 1)数字 JavaScript只有一种数值类型:number(数字),包括"整数"和带小数的十进制数. //数字的语法 a.toExponential(); // &quo ...

  5. ELK日志套件安装与使用

    1.ELK介绍     ELK不是一款软件,而是elasticsearch+Logstash+kibana三款开源软件组合而成的日志收集处理套件,堪称神器.其中Logstash负责日志收集,elast ...

  6. css3滚动效果

    .css{ -webkit-transition-duration: .3s;    transition-duration: .3s; }

  7. python + selenium <二>

    应用Webdriver,实现自动化 #coding:gbk from selenium import webdriver import os from selenium.webdriver.suppo ...

  8. React中父组件与子组件之间的数据传递和标准化的思考

    React中父组件与子组件之间的数据传递的的实现大家都可以轻易做到,但对比很多人的实现方法,总是会有或多或少的差异.在一个团队中,这种实现的差异体现了每个人各自的理解的不同,但是反过来思考,一个团队用 ...

  9. 设置border属性变化不同形状:三角形、圆形、弧形 2017-03-20

    一.通过设置边框----正方形.三角形 <style> .c{ height: 0px; width: 0px; border-top: 50px solid red; border-ri ...

  10. 部署Cloudera Management for centos 7

    hadoop生态圈框架工具甚多,自己整合起来很是繁琐,特别是oozie以及hue结合来实现hive.mr.spark等定时依赖任务更是一步一个坑,为了减少踩坑,只好从apache hadoop,转向C ...