Java 判断回文字符串有多少和其中的最大字符串
一、简介代码功能
该代码的功能可以实现对任意的一段字符串进行判断是否有回文,回文有哪些,和其中的最大回文。
二、代码部分
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 判断回文字符串有多少和其中的最大字符串的更多相关文章
- Java判断回文数算法简单实现
好久没写java的代码了, 今天闲来无事写段java的代码,算是为新的一年磨磨刀,开个头,算法是Java判断回文数算法简单实现,基本思想是利用字符串对应位置比较,如果所有可能位置都满足要求,则输入的是 ...
- Java——判断回文
package basic; import java.util.Scanner; public class Palindrome{ public static boolean isPalindrome ...
- java判断回文数
- 判断回文字符串、回文链表、回文数(python实现)
所谓回文字符串,就是正读和反读都一样的字符串,比如"level"或者"noon"等等就是回文串.即是对称结构 判断回文字符串 方法一: def is_palin ...
- 判断回文字符串(c,python)
回文字符串:一个字符串,不论是从左往右,还是从右往左,字符的顺序都是一样的(如abba,abcba等) 判断回文字符串比较简单,即用两个变量left,right模仿指针(一个指向第一个字符,一个指向最 ...
- HDOJ/HDU 2163 Palindromes(判断回文串~)
Problem Description Write a program to determine whether a word is a palindrome. A palindrome is a s ...
- C语言 · 判断回文
算法提高 判断回文 时间限制:1.0s 内存限制:512.0MB 编程判断一个字符串是否是回文,当字符串是回文时,输出字符串:yes!,否则输出字符串:no!.所谓回文即正向与反向的 ...
- [leetcode]125. Valid Palindrome判断回文串
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...
- C 语言实例 - 判断回文数
C 语言实例 - 判断回文数 判断一个数是否为回文数. 设n是一任意自然数.若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数.例如,若n=,则称n为一回文数:但若n=,则n不是回文数 ...
随机推荐
- JavaScript中定义变量和存储值的类型判断
以严谨的语法表示作为前提 首先变量被定义,然后给变量赋予一定的值,变量真正的作用就是存储值 变量的定义和赋值 变量的定义: var a 使用关键字var+变量名表示定义一个变量 a 变量的赋值: va ...
- C# .NET更智能的数据库操作封装项目
前面两篇文章介绍了框架的思路及里面大概的实现过程,那时候忘记上传项目,就补发一下.顺便介绍下框架使用方式,并分析下框架使用的优缺点. 先发一下前两章的链接 篇一:http://www.cnblogs. ...
- 从数组中每次取一个不同的数组成员 getRandomItem(arr)
积累些常用的方法, 都是随写的, 不好之处, 望指出. getRandomItem(arr)函数如下: var getRandomItem = function () { var preItem = ...
- Nginx+IIS+Redis 处理Session共享问题 2
接下来主要说下利用nginx来测试 两台Windows server 1.10.120.131.210 - 端口84部署demo 2.10.120.131.211 - 端口84部署demo ngi ...
- ASP提取字段中的图片地址
Function RegImg(TheStr) Dim RegEx Set RegEx = New RegExp '建立正则表达对象. RegEx.IgnoreCase =T ...
- SEO-友情链接注意事项
为什么要专门给友链一个区域呢?由此就可以想象到友情链接对一个网站有多重要前期,网站没有权重的时候,跟别人换友链,人家基本是不会换的因为你网站没权重,加了友链他也获取不到权重,对网站没有多少好处一般我们 ...
- 设置iPhone网页固定到桌面上的图标
<!--IOS Icon--> <link rel="apple-touch-icon-precomposed" href="@Url.Content( ...
- 使用Topshelf组件构建简单的Windows服务
很多时候都在讨论是否需要了解一个组件或者一个语言的底层原理这个问题,其实我个人觉得,对于这个问题,每个人都有自己的看法,个人情况不同,选择的方式也就会不同了.我个人觉得无论学习什么,都应该尝试着去了解 ...
- jsp中的动作标签
和html标签一样,使用尖括号'<>'包裹起来. 用于在jsp页面中处理业务逻辑,避免在jsp中过多的使用java脚本. <jsp:forward>用于请求转发,它与Reque ...
- CentOS 中 YUM 安装桌面环境(转)
使用 yum groupinstall 指令很容易就能安装上图形界面的桌面系统. 1. yum 的 group 指令 yum 可以以程序组的模式来安装成套的软件包.支持的软件包可以通过, # yum ...