使用递归方式判断某个字串是否是回文( palindrome )

“回文”是指正着读、反着读都一样的句子。比如“我是谁是我” 使用递归算法检测回文的算法描述如下: A single or zero-character string is a palindrome. Any other string is a palindrome if the first and last characters are the same, and the string that remains, excepting those characters, is a palindrome.

回文的代码如下:

package Huiwen;
import java.util.Scanner;
public class huiwen {
public static boolean isPalindrome(String s,int i,int j){
if(i > j)
throw new IllegalArgumentException();
if(i == j)
return true;
else{
return (s.charAt(i) == s.charAt(j)) && isPalindrome(s,i+1,j-1);
}
}

public static void main(String[] args){
Scanner in=new Scanner(System.in);
String s = in.nextLine();
int i = 0;
int j = s.length() - 1;
System.out.println(s + " is Palindrome? " + huiwen .isPalindrome(s, i, j));
}
}

代码截图:

原文地址:https://www.cnblogs.com/lishengming00/p/9785513.html

时间: 2024-08-04 01:43:50

使用递归方式判断某个字串是否是回文( palindrome )的相关文章

用递归方式判断字符串是否是回文

题目要求:使用递归方式判断某个字串是否是回文( palindrome )回文”是指正着读.反着读都一样的句子.比如“我是谁是我” package zzm; import java.util.Scanner; public class Hw { static Scanner input=new Scanner(System.in); public static void main(String[] args) { System.out.print("请输入一串字符:"); String

判断输入的字符串是否是回文数

<?phpfunction yuanyincount($str){ $str_len=strlen($str); $a_count=0; $e_count=0; $i_count=0; $o_count=0; $u_count=0; $other_count=0; //五种原因字母的数组,没写输出 $a_arr=array(); $e_arr=array(); $i_arr=array(); $o_arr=array(); $u_arr=array(); $other_arr=array();

回文串---最长回文

HDU   3068 Description 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一样的字符串,如aba, abba等 Input 输入有多组case,不超过120组,每组输入为一行小写英文字符a,b,c...y,z组成的字符串S 两组case之间由空行隔开(该空行不用处理) 字符串长度len <= 110000 Output 每一行一个整数x,对应一组case,表示该组case的字符串中所包含的最长回文长度. Sample

如何判断一个单向链表是否为回文链表(Palindrome Linked List)

题目:给定一个单向链表,判断它是不是回文链表(即从前往后读和从后往前读是一样的).原题见下图,还要求了O(n)的时间复杂度O(1)的空间复杂度. 我的思考: 1,一看到这个题目,大脑马上想到的解决方案就是数组.遍历链表,用数组把数据存下来,然后再进行一次遍历,同时用数组反向地与之比较,这样就可以判断是否回文.这个方法时间复杂度是O(n),达到了要求,然而空间复杂度显然不满足要求.所以,开数组这一类的方法显然不是最佳的. 2,既然要满足O(1)的空间复杂度,我就想到了用一个变量来存储这些数据,恰好

给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。

思路:回文串的特点是,逆序输出和正序输出是一样的.所以这道题可以从这方面来考虑.如果将此字符串逆序输出,那么两个字符串的最长公共子序列将是最长的回文字符串,那么剩余的值将是要删除的字符个数. 求LCS的方法可以在csdn中找到. import java.util.*; public class Main{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); while(scan.hasNex

使用数组判断输入的五位数是否为回文

输入一个五位正整数,使用数组判断它是不是回文数(例如12321是回文) Scanner inScanner = new Scanner(System.in);  System.out.print("请输入一个五位整数:");  String num = inScanner.next();  if (num.matches("\\d+")) { // 是否输入回车   char[] nums = num.toCharArray();  //将输入的字符串转化为一个字符

[LeetCode]Palindrome Number 判断二进制和十进制是否为回文

class Solution { public: bool isPalindrome2(int x) {//二进制 int num=1,len=1,t=x>>1; while(t){ num<<=1; t>>=1; len++; } len/=2; while(len--){ if((num&x==0)&&(x&1)!=0){ return 0; } x&=(~num); x>>=1; num>>=2; }

构造回文 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。

输入描述: 输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000. 输出描述: 对于每组数据,输出一个整数,代表最少需要删除的字符个数. 输入例子: abcda google 输出例子: 2 2 给出c++代码: #include <iostream>#include <string>#include <algorithm>using namespace std;int LCS(const string &str1,con

算法——回文解密,判断一个素组是否为回文

算法中,队列是先进先出原则,而栈是后进先出原则,栈限定只能在一端进行插入和删除操作,而栈的作用有哪些? 可以通过一组回文字符串来看:"xyzyx",同过栈来判断字符串是否是回文 案例:package test; /** * @author dayu 解密回文--栈 * @version 创建时间:2017年11月13日 下午2:15:01 * 类说明 */ public class zhan { //回文--一定有对称轴,所以一定是单数 public static void main(