一、简介代码功能

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

二、代码部分

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. Android -- RecyclerView实现顶部吸附效果

    1,先来看一下今天实现的效果: 2,这次的效果是使用ItemDecoration来实践的,来看一看我们的实现吧 第一步:首先添加依赖,由于我们这些数据是请求网络的,所以一下我们添加网络框架依赖.Rec ...

  2. iOS性能检测之Instrunments - 几种常用工具简单介绍

    Instrunments:  没错,就是这货,很多人平时开发可能不一定会用到这个,但我要说的是,学会使用它,会让你加分不少哦 先来一张全家福: 1.打开方式 或者 两种方式都行. 2.今天主要介绍一下 ...

  3. 【2017-03-05】函数基础、函数四种结构、ref和out参数、递归

    一.函数基础 1.函数/方法:非常抽象独立完成某项功能的一个个体 2.函数的作用: 提高代码的重用性提高功能开发的效率提高程序代码的可维护性 3.分类 固定功能函数高度抽象函数 4.函数四要素:输入, ...

  4. H5微信播放全屏问题

    在ios和安卓手机里的微信下播放视频时,会遇到不少问题,例如需要手动点击,视频才会播放,并且视频会跳出微信框,出现控制条,如果视频不是腾讯视频,播放完毕会出现腾讯视频的广告推送等问题 解决办法:给vi ...

  5. 《深入理解Java虚拟机》学习笔记之字节码执行引擎

    Java虚拟机的执行引擎不管是解释执行还是编译执行,根据概念模型都具有统一的外观:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果. 运行时栈帧结构 栈帧(Stack Frame) ...

  6. html5部分相关

    滚动速度属性 scrollamount 例子<marquee scrollamount="3">这个速度是3</marquee> <marquee s ...

  7. win10如何合并硬盘分区

    好多人都会讲电脑硬盘分成几个不同的区,以方便自己的资料的存储和查找,但不少人不知道如何合并已经分出的硬盘分区.以下是我的经验,与大家分享: 1.   首先,右击“此电脑”,在弹出来的右键菜单这种选择“ ...

  8. 注册登录系统项目思路 -- javaweb

    功能:   > 注册   > 登录   ---------------------------------   JSP:   * login.jsp  --> 登录表单   * re ...

  9. JavaWeb之Filter过滤器

    原本计划这一篇来总结JSP,由于JSP的内容比较多,又想着晚上跑跑步减减肥,所以今天先介绍Filter以及它的使用举例,这样的话还有些时间可以锻炼锻炼.言归正传,过滤器从字面理解她的话有拦网.过滤的功 ...

  10. Redis Sentinel中的机制与原理详解

    序言 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案.实际上这意味着你可以使用Sentinel模式创建一个可以不用人为干预而应对各种故障的Redis部署. 它的主要功能有以 ...