精华内容
下载资源
问答
  • 判断一个是否是回文字符串回文字符串是指正序(从左向右)和倒序(从右向左)读都是一样的字符串。 示例1 输入:abc 输出:false 示例2 输入:-121 输出:false 示例3 输入:abba 输出:true 判断是否为回文...
  • } 第三种:深度:判断String st r= "wangwei,haha,ww,ww,haha,wangwei"是不是回文字符串: package com.lanou.test; public class DuiCheng { private String str; public DuiCheng(String str) { this.str...

    第一种:

    public static boolean isHuiwen(String str) {
    		boolean result = true;
    		for(int i=0;i<str.length();i++) {
    			if(str.charAt(i) != str.charAt(str.length()-1-i)) {
    				result = false;
    				break;
    			}
    		}
    		return result;
    	}
    

    第二种:

    public static boolean isHuiwen1(String str) {
    		String temp ="";
    		for (int i = 0; i < str.length(); i++) {
    			temp = str.charAt(i)+temp;
    		}
    		return str.equals(temp);
    		
    	}
    

    第三种:深度:判断String st r= "wangwei,haha,ww,ww,haha,wangwei"是不是回文字符串:

    package com.lanou.test;
    
    public class DuiCheng {
    	private String str;
    
    	public DuiCheng(String str) {
    		this.str = str;
    	}
    
    	private boolean dui() {
    		String[] array;
    		boolean flag = true;
    		if (str.indexOf(',') > 0) {
    			array = str.split(",");
    		} else {
    			array = str.split("");
    		}
    		for (int i = 0; i < array.length / 2; i++) {
    			if (!array[i].equals(array[array.length - 1 - i])) {
    				flag= false;	
    			}		
    		}
    		return flag;
    		
    
    	}
    
    	public void showDui() {
    		if (dui()) {
    			System.out.println("是回文字符串");
    		} else
    			System.out.println("不是回文字符串");
    	}
    }
    
    

    主方法调用:

    package com.lanou.test;
    
    public class Main {
    	public static void main(String[] args) {
    		DuiCheng e = new DuiCheng("wangwei,haha,ww,ww,haha,wangwei");
    		e.showDui();
    		DuiCheng d = new DuiCheng("123456我654321");
    		d.showDui();	
    	}
    }
    
    

    字典序 排序:
    类:

    package com.lanou.test;
    
    public class PaiXu {
    	int a;
    
    	public PaiXu(int a) {
    		this.a = a;
    	}
    
    	public void pai() {
    		String[] array = new String[a];
    		for (int i = 0; i < array.length; i++) {
    			array[i] = (i + 1) + "";
    		}
    
    		for (int i = 0; i < array.length; i++) {
    			for (int j = 0; j < array.length - i - 1; j++) {
    				if (array[j].compareTo(array[j + 1]) > 0) {
    					String temp = array[j];
    					array[j] = array[j + 1];
    					array[j + 1] = temp;
    				}
    			}
    		}
    		for (int i = 0; i < array.length; i++) {
    			if (i != 0 && i % 10 == 0) {
    				System.out.println();
    			}
    			System.out.print(array[i] + "\t");
    		}
    	}
    }
    
    

    调用:

    PaiXu p =new PaiXu(100);
    p.pai();
    
    展开全文
  • JAVA算法:回文字符串相关问题详解(回文字符串总结) Q1. 编写一个工具方法判断给定的字符串是否为回文字符串 例如:给定一个字符串“aabbaa”,判断该字符串是否为回文字符串。 算法设计如下: /* * 给定...

    JAVA算法:回文字符串相关问题详解(回文字符串总结)

    Q1. 编写一个工具方法判断给定的字符串是否为回文字符串

     例如:给定一个字符串“aabbaa”,判断该字符串是否为回文字符串。

    算法设计如下:

    	/*
    	 * 给定一个字符串,判断该字符串是否为一个回文字符串
    	 * start表示需要判断的起始位置
    	 * end表示需要判断的结束位置
    	 */
    
    	public static boolean isPalindrome(String input, int start, int end) {
    		while (start < end) {
    			if (input.charAt(start++) != input.charAt(end--))
    				return false;
    		}
    		return true;
    	}

    完整的测试代码如下:

    package com.bean.algorithm.palindromic;
    
    public class PalindromicUtils {
    
    	/*
    	 * 给定一个字符串,判断该字符串是否为一个回文字符串
    	 * start表示需要判断的起始位置
    	 * end表示需要判断的结束位置
    	 */
    
    	public static boolean isPalindrome(String input, int start, int end) {
    		while (start < end) {
    			if (input.charAt(start++) != input.charAt(end--))
    				return false;
    		}
    		return true;
    	}
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		String str="aabbaa ";
    		//String str="fafadabcbafdfdfas";
    		//注意去掉字符串前后的空格
    		str=str.trim();
    		boolean flag=isPalindrome(str,0,str.length()-1);
    		System.out.println("Flag is: "+flag);
    		
    	}
    
    }
    

    程序运行结果;

    Flag is: true


    Q2. 求给定字符串中的最长回文子串

    输入一个字符串,求出其中最长的回文子串。

    子串的含义是:在原串中连续出现的字符串片段。

    在求解这个问题的时候,一定要看清楚问题。不要混淆“子串”和“子序列”的概念。“子串”是指在源字符串中连续出现的字符串片段;而“子序列”是指在源字符串中可以不连续出现的字符串片段。一个连续,一个不连续。


    回文的含义是:子串从左向右看和从右向左看是相同的,例如:abba,yyxyy。 在判断时忽略所有标点符号和空格,且忽略大小写,但是输出应保持原样。
    输入字符串的长度不超过5000,且占据单独一行。 应该输出最长的回文串。如果有多个,输出起始位置最靠左的一个。

    例如给定字符串:fafadabcbafdfdfas

    其最长回文子串为:afdfdfa

    算法设计如下:

    package com.bean.algorithmexec;
    
    import java.io.FileNotFoundException;
    
    public class LongestPalindromeString3 {
    
    	/*
    	 *  
    	 * 输入一个字符串,求出其中最长的回文子串。 
    	 * 子串的含义是:在原串中连续出现的字符串片段。
    	 * 回文的含义是:子串从左向右看和从右向左看是相同的,例如:abba,yyxyy。 在判断时忽略所有标点符号和空格,且忽略大小写,但是输出应保持原样。
    	 * 输入字符串的长度不超过5000,且占据单独一行。 应该输出最长的回文串。如果有多个,输出起始位置最靠左的一个。
    	 *  
    	 */
    
    	/*
    	 * 动态规划算法
    	 * dp(i, j) 表示是否 s(i ... j) 能够形成一个回文字符串
    	 * 当 s(i) 等于 s(j) 并且  s(i+1 ... j-1) 是一个回文字符串时 dp(i, j) 的取值为 true
    	 * 当我们找到一个回文子字符串时,我们检查其是否为最长的回文字符串
    	 */
    	public static String longestPalindrome(String s) {
    		// n表示字符串的长度
    		int n = s.length();
    		String res = null;
    		// 定义一个dp数组
    		boolean[][] dp = new boolean[n][n];
    		// 外层循环控制从最后一个字符向第一个字符渐进
    		for (int i = n - 1; i >= 0; i--) {
    			// 内层循环控制
    			for (int j = i; j < n; j++) {
    				// dp数组元素
    				dp[i][j] = s.charAt(i) == s.charAt(j) && (j - i < 3 || dp[i + 1][j - 1]);
    
    				if (dp[i][j] && (res == null || j - i + 1 > res.length())) {
    					res = s.substring(i, j + 1);
    				}
    			}
    		}
    
    		return res;
    	}
    
    	public static void main(String[] args) throws FileNotFoundException {
    			// 读取输入的字符串
    			String strdemo = "fafadabcbafdfdfas";
    			String ANSWER = longestPalindrome(strdemo);
    			System.out.println(ANSWER);
    	}
    }
    

    程序运行结果:

    afdfdfa

    另外一种算法:

    package com.bean.algorithmexec;
    
    public class LongestPalindromeString4 {
    
    	static void printSubStr(String str, int low, int high) {
    		System.out.println(str.substring(low, high + 1));
    	}
    
    
    	static int longestPalSubstr(String str) {
    		int maxLength = 1; 
    
    		int start = 0;
    		int len = str.length();
    
    		int low, high;
    
    	
    		for (int i = 1; i < len; ++i) {
    			
    			low = i - 1;
    			high = i;
    			while (low >= 0 && high < len && str.charAt(low) == str.charAt(high)) {
    				if (high - low + 1 > maxLength) {
    					start = low;
    					maxLength = high - low + 1;
    				}
    				--low;
    				++high;
    			}
    
    		
    			low = i - 1;
    			high = i + 1;
    			while (low >= 0 && high < len && str.charAt(low) == str.charAt(high)) {
    				if (high - low + 1 > maxLength) {
    					start = low;
    					maxLength = high - low + 1;
    				}
    				--low;
    				++high;
    			}
    		}
    
    		System.out.print("最长回文子串为: ");
    		printSubStr(str, start, start + maxLength - 1);
    
    		return maxLength;
    	}
    
    	
    	public static void main(String[] args) {
    		String str = "fafadabcbafdfdfas";
    
    		System.out.println("长度是: " + longestPalSubstr(str));
    
    	}
    }
    

    程序运行结果为:

    最长回文子串为: afdfdfa
    长度是: 7


    Q3. 对于给定的字符串输出所有可能的回文子串分区

    例如:给定字符串 str = “bcc”

    输出结果为:["b", "c", "c"], ["b", "cc"]

    算法设计:

    package com.bean.algorithm.palindromic;
    
    import java.util.ArrayList;
    import java.util.Deque;
    import java.util.LinkedList;
    
    public class PrintAllPalindrome {
    
    	public static void main(String[] args) {
    		String input = "abbcbba";
    		//String input = "fafadabcbafdfdfas ";
    		
    		System.out.println("对于给定的字符串 " + input + " 的所有可能的回文分区 :");
    
    		allPalPartitions(input);
    	}
    
    	private static void allPalPartitions(String input) {
    		int n = input.length();
    
    		// 用于存放所有回文子串( palindromic partitions)
    		ArrayList<ArrayList<String>> allPart = new ArrayList<>();
    
    		// 用于存放当前回文子串( palindromic partitions)
    		Deque<String> currPart = new LinkedList<String>();
    
    		// 递归调用方法生成所有分区部分
    		allPalPartitonsUtil(allPart, currPart, 0, n, input);
    
    		// 输出所有分区部分字符串
    		for (int i = 0; i < allPart.size(); i++) {
    			for (int j = 0; j < allPart.get(i).size(); j++) {
    				System.out.print(allPart.get(i).get(j) + " ");
    			}
    			System.out.println();
    		}
    
    	}
    
    
    	private static void allPalPartitonsUtil(ArrayList<ArrayList<String>> allPart, Deque<String> currPart, int start,
    			int n, String input) {
    		
    		if (start >= n) {
    			allPart.add(new ArrayList<>(currPart));
    			return;
    		}
    
    		for (int i = start; i < n; i++) {
    
    			// 如果子串  str[start..i] 是回文子串( palindrome)
    			if (isPalindrome(input, start, i)) {
    
    				currPart.addLast(input.substring(start, i + 1));
    
    				allPalPartitonsUtil(allPart, currPart, i + 1, n, input);
    
    				// 从当前分区中删除子串 str[start..i]
    				currPart.removeLast();
    			}
    		}
    	}
    
    	// 判断字符串是否为回文字符串(Palindrome)的工具方法(utility function) 
    	private static boolean isPalindrome(String input, int start, int i) {
    		while (start < i) {
    			if (input.charAt(start++) != input.charAt(i--))
    				return false;
    		}
    		return true;
    	}
    
    }
    

    程序运行结果:

    对于给定的字符串 abbcbba 的所有可能的回文分区 :
    a b b c b b a 
    a b b c bb a 
    a b bcb b a 
    a bb c b b a 
    a bb c bb a 
    a bbcbb a 
    abbcbba 

     

    展开全文
  • Java实现回文字符串判断

    千次阅读 2017-03-22 10:11:56
    这里先说一下判断回文字符串的三种思路:递归、双指针以及字符串翻转1.双指针:即在字符串前后同时进行移动判断,对应位置上的字符是否相同:public boolean Palindrome(String s,int start,int end){ char[] c = s....

    最近遇到很多判断回文的问题,这里列出自己的一些解决思路
    回文简单的解释就是前后翻转之后还是相同的
    这里先说一下判断回文字符串的三种思路:递归、双指针以及字符串翻转

    1.双指针:即在字符串前后同时进行移动判断,对应位置上的字符是否相同:

    public boolean Palindrome(String s,int start,int end){
    
            char[] c = s.toCharArray();
    
            if (start >= end) return true;
    
            return c[start] == c[end] && Palindrome(s,++start,--end);
        }

    2.利用字符串翻转进行判断(这也是最直接的判断方式):

     public boolean Palindrome(String s){
    
            StringBuffer stringBuffer = new StringBuffer(s);
    
            return s.equals(stringBuffer.reverse().toString());
    
    
        }

    3.遍历字符串进行判断:

    public boolean Palindrome(String s){
            int len = s.length();
            for (int i =0;i<len/2;i++)
                if (s.charAt(i) != s.charAt(len-i-1))
                    return false;
                return true;
        }

    希望有其他思路的朋友可以留言进行交流,谢谢

    展开全文
  • java判断回文字符串的方法

    千次阅读 2020-03-20 22:49:31
    首先介绍下什么是回文字符串回文字符串就是关于中心对称的字符串,比如 测试下

    首先介绍下什么是回文字符串,回文字符串就是关于中心对称的字符串,比如字符串ABCCBA、QWEWQ等等,都是回文字符串
    思路一:将一个字符串分为左右两部分,然后将左部分从位置0开始遍历,而右部分则从尾部开始遍历,然后进行比较,如果出现不等的情况则不是回文字符串,如果遍历完都是相等的则是回文字符串,下面是代码展示

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    public class Main{
    	public static void main(String[] args) throws IOException{
    		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    		StringBuilder strB=new StringBuilder(br.readLine());
    		System.out.println("输出的字符串是否为回文字符串:"+judgment(strB));
    	}
    	public static boolean judgment(StringBuilder strB){
    		//n为每部分的长度
    		int n=strB.length()/2;
    		String strLeft=strB.substring(0,n);
    		String strRight;
    		if(strB.length()%2==0){
    			strRight=strB.substring(n);
    		}else{
    			strRight=strB.substring(n+1);
    		}
    		//左部分从0开始遍历,右部分从尾部开始遍历
    		for(int i=0;i<n;i++){
    			if(strLeft.charAt(i)!=strRight.charAt(n-i-1)){
    				return false;
    			}
    		}
    		return true;
    	}
    }
    

    思路二:利用StringBuilder类的reverse()方法,将字符串右边部分进行反转,如果左右两部分相等则为回问字符串,代码如下:

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    public class Main2{
    	public static void main(String[] args) throws IOException{
    		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    		StringBuilder strB=new StringBuilder(br.readLine());
    		System.out.println("输出的字符串是否为回文字符串:"+judgment(strB));
    	}
    	public static boolean judgment(StringBuilder strB){
    		int n=strB.length()/2;
    		StringBuilder strLeft=new StringBuilder(strB.substring(0,n));
    		StringBuilder strRight=new StringBuilder();
    		if(strB.length()%2==0){
    			strRight=new StringBuilder(strB.substring(n));
    		}else{
    			strRight=new StringBuilder(strB.substring(n+1));
    		}
    		strRight.reverse();
    		if(String.valueOf(strLeft).equals(String.valueOf(strRight))) return true;
    		else return false;
    	}
    }
    
    展开全文
  • 在本篇文章里小编给各位整理的是一篇关于Java判断字符串回文的代码实例内容,需要的朋友们可以跟着学习参考下。
  • Java 判断字符串是否是回文字符串

    千次阅读 2019-07-28 20:02:00
    System.out.println("使用方法1判断结果为,输入字符串不是回文字符串"); if(test.IsPalindrome2(A)) System.out.println("使用方法2判断结果为,输入字符串是回文字符串"); else System.out.println("使用方法...
  • java判断回文字符串几种简单的实现

    万次阅读 多人点赞 2017-10-18 00:49:49
    java判断回文字符串几种简单的实现
  • 判断是否能成为回文字符串。 示例 1: 输入: “aba” 输出: True 示例 2: 输入: “abca” 输出: True 解释: 你可以删除c字符。 注意: 字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。 PS: 我只允许有一次...
  • 回文字符串判断实现

    2020-04-16 13:10:00
    给定一个字符串,依次取出字符串的首尾进行判断,如果两个字符不相同,即非回文字符串;否则再将当前操作的首尾去掉,再进行上一步操作,直到最后没有字符串或者只有一个字符串。 2. 实现(Java) /** - 该类测试...
  • Java判断字符串是否为回文字符串

    千次阅读 2020-04-17 15:37:25
    回文字符串就是将该字符串进行逆序处理后,仍然与原字符串一样 如:abcdcba、12321、雾锁山头山锁雾 第一种方法 利用字符串的下标,判断第一个字符与最后一个字符是否相同,第二个字符与倒数第二个字符是否相同,...
  • 1、回文字符串判断 假如这个字符串为奇数长度的回文字符串,则除了最中间的字符外,其左右的字符串两两相同。 假如这个字符串为偶数长度的回文字符串,则其左右完全对称。 代码如下: #include<iostream> #...
  • 判断是否是回文字符串Java实现)

    千次阅读 2019-07-17 23:22:55
    找出区间数字的所有回文数,此例我们判断了五位数字,找出了五位数中所有的的回文数,大一开始接触C语言就是这么干的。 public class Main{ public static void main(String [] args){ int count2 = 0; ...
  • package lianxi; import java.util.*; public class Test37{ public static void main(String[]... if(huiwen(ss)) System.out.println("是回文字符串"); else System.out.println("不是是回文字符串"); } publi.
  • 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 ...
  • Java判断是否为回文字符串

    千次阅读 2019-08-03 09:55:28
    如:“A man, a plan, a canal: Panama” 是一段回文字符串 “race a car”则不是回文字符串 实现方法 从字符串的两端逐个进行比较,若遇到非字母或数字字符则将索引值加一或减一,如果两端字符不同,直接返回fals....
  • java判断回文字符串的几种方法

    万次阅读 多人点赞 2014-07-22 16:45:43
    java判断回文字符串几种简单的实现: 1.将字符串倒置后逐一比较,实现如下: public class HuiWenTest { /** * @SERLIN */ public static void main(String[] args) { String str = ""; System.out....
  • Java 判断回文字符串

    2021-04-01 14:39:02
    Java 判断回文字符串
  • System.out.println("是回文字符串"); }else{ System.out.println("不是回文字符串"); } } public static void main(String[] args) { String str="ccaa"; fun(str); } ``
  • 回文字符串判断的3种方法

    千次阅读 2020-08-24 19:40:56
    回文字符串判断是面试和笔试中常见的面试题之一,同时也是 LeetCode 中一道经典的面试题,那么本文我们就来看一下什么是回文字符串?以及如何实现回文字符串的判断。 回文字符串定义 回文字符串是一个正读和反读...
  • 作者 |磊哥来源 | Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)回文字符串判断是面试和笔试中常见的面试题之一,同时也是 Leet...
  • 判断回文字符串

    2021-01-15 22:01:26
    问题描述:如何判断回文字符串? 什么是回文字符串? 如果一个字符串从前向后读和从后向前读,都是一个字符串称为回文字符串。 例如:mom,dad,opo等。 package work_15; import java.util.Scanner; public class ...
  • 一开始呢,,我是这样写的public static boolean check(String str){ boolean flag = true;... //System.out.println("字符串为:"+str); char[] s = str.toCharArray(); int len = s.length; in
  • 输入一个字符串,判断该字符串中除去空格之后的字符串是否为回文字符串。 要求:不可使用 Java 已实现的方法替换空格,不可消耗额外的空间 代码实现 此处为判断方法的实现 public static boolean isPla(String ...
  • 简单字符串判断(只考虑包括字母,数字的字符串): 回文定义:“回文字符串”就是正读倒读都一样的字符串。如字符串“Abcd121dcba”是一段回文字符串。 实现方法:将字符串分成两部分并转换为字符数组,从字符串...
  • 首先,回文字符串是指首位对称的字符串,如ABCDDCBA、ABCDCBA。 单链表,是一种线性表。...下面以单链表的知识来图解展示,如何判断回文字符串的。 //单链表数据结构 public class LinkNode<T> { LinkNo...
  • 解析:所谓回文意思就是字符串顺着读和反着读都是一样的就比如“1234321”,“abcdcba 这里我就假设要验证的字符串是String s=“12345”,当然这个是可以自定义输入 方法一: /* * 先假设String s="12345",头和尾...
  • leetcode 680 思路 判断回文串显然是用双指针的,i从前往后遍历,j从后往前遍历。难点就是怎么去判断删除一个元素后的字符串是不是回文串,我提供一个思路: ...public class 验证回文字符串2 { public
  • java —— 回文串字符

    2021-01-15 19:22:36
    “xyzyx”是一个回文字符串,所谓回文字符串就是指正读反读均相同的字符序列, 如“席主席”、“记书记”、“aha”和“ahaha”均是回文,但“ahah”不是回文。 输入一行字符(仅包含小写英文字母a~z)请判断这行字符...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,013
精华内容 3,605
关键字:

java回文字符串的判断

java 订阅