java回文字符串是什么,如何判断一个字符串是否是回文
大家好,今天小编来为大家解答以下的问题,关于java回文字符串是什么,如何判断一个字符串是否是回文这个很多人还不知道,现在让我们一起来看看吧!
Java语言如何判断一个字符串是否回文
import java.util.*;public class StringBufferDemo{
public static void main(String[] args){
// TODO Auto-generated method stub
//从键盘上输入一个字符串str
String str="";
System.out.println("请输入一个字符串:");
Scanner in=new Scanner(System.in);
str=in.nextLine();
//根据字符串创建一个字符缓存类对象sb
StringBuffer sb=new StringBuffer(str);
//将字符缓存中的内容倒置
sb.reverse();
//计算出str与sb中对应位置字符相同的个数n
int n=0;
for(int i=0;i<str.length();i++){
if(str.charAt(i)==sb.charAt(i))
n++;
}
//如果所有字符都相等,即n的值等于str的长度,则str就是回文。
if(n==str.length())
System.out.println(str+"是回文!");
else
System.out.println(str+"不是回文!");
}
}
这只是一种方法而已,仅供参考!希望楼主用自己的思维写出高效的代码,与君共勉!!
java中对输入的字符串进行判断
用equals方法进行比较判断,如:输入的字符串为str=zhidao
"zhidao".equals(str))
Equals则是string对象的方法
我们比较无非就是这两种 1、基本数据类型比较 2、引用对象比较
1、基本数据类型比较
Equals都比较两个值是否相等。相等为true否则为false;
2、引用对象比较
Equals都是比较栈内存中的地址是否相等。相等为true否则为false;
java 编写一个方法,找出一个字符串中最长的回文子串
Java code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import java.util.ArrayList;
import java.util.List;
public class Palindrome{
/*找出一个字符串中最长的回文子串
*从字符串中第i个字符开始的所有非空回文子串的个数,记作为Ci.此方法的复杂度为
* O(C1+ C2+...+ Cn)
*当字符串中任意两个非空回文子串的起始位置不同时, C1= C2=...= Cn= 1,复杂度为O(N);
*当字符串所有字符均为同一字符时, Ci= n- i,此时复杂度为O(N*N);
*在多数情况下,此方法的复杂度远低于O(N*N).
*/
public List<String> getLongestPalindrome(String theString){
int strLen= theString.length();
List<String> results= new ArrayList<String>(strLen);
if(strLen== 0){
return results;
}
//从第i个位置开始的所有回文子串的结束位置.
int[] endIndice= new int[strLen+ 1];
// endIndice中有效数据的长度.
int numberOfPalindromes= 1;
//最长回文子串的长度.对于非空串至少可以找到长度为1的回文子串.
int maxLen= 1;
results.add(theString.substring(strLen- 1));
//计算从第i个位置开始的所有回文子串.这样的子串分为三种:
// 1.在从第i+1个位置开始的回文子串的基础上,在两端加上相同的字符;
// 2.长度为1的回文子串;
// 3.空串.
for(int i= strLen- 2; i>= 0; i--){
int j= 0, k= 0;
while(j< numberOfPalindromes){
if(theString.charAt(i)== theString.charAt(endIndice[j])){
endIndice[k]= endIndice[j]+ 1;
int newLength= endIndice[k]- i;
if(newLength>= maxLen){
if(newLength> maxLen){
maxLen= newLength;
results.clear();
}
results.add(theString.substring(i, endIndice[k]));
}
if(endIndice[k]< strLen){
k++;
}
}
j++;
}
//加入长度为1的子串
endIndice[k++]= i+ 1;
if(maxLen== 1){
results.add(theString.substring(i, i+ 1));
}
//加入空串
endIndice[k++]= i;
numberOfPalindromes= k;
}
return results;
}
public static void main(String[] args){
Palindrome p= new Palindrome();
printList(p.getLongestPalindrome("gabcecbaefd"));
printList(p.getLongestPalindrome("bbcbaefccfg"));
printList(p.getLongestPalindrome("aaaaaaaaaaa"));
printList(p.getLongestPalindrome("abcdefghijk"));
printList(p.getLongestPalindrome("abcdeeddejk"));
printList(p.getLongestPalindrome(""));
}
public static void printList(List<? extends Object> list){
System.out.println("**************************");
System.out.println(list.size()+" result(s):");
for(Object o: list){
System.out.println(o);
}
}
}
如何判断一个字符串是否是回文
首先,理解什么是回文字符串,简单的一句话概括就是关于中心左右对称的字符串。例如:ABCBA或者AACCAA是回文字符串;ABCCA或者AABBCC不是回文字符串。
判断方法就是,依次看两端的字符是否相等。例如:ABCBA,第一个字符与最后一个字符相等,第二个字符与倒数第二个字符相等,第三个字符是中心字符,无需判断。如果是AACCAA就要判断。所以上面的字符串是回文字符串。
以下是C语言实现判断回文字符串的代码。
#include<stdio.h>
#include<string.h>
intmain(void)
{
chars[30];
intb=0;//1表示不是回文字符串
puts("请输入一个字符串:");
scanf("%s",s);
for(inti=0;i<strlen(s)/2;i++)
if(s[i]!=s[strlen(s)-i-1])
{
b++;
break;
}
if(b)
printf("这不是回文字符串。");
else
printf("这是回文字符串。");
return0;
}
OK,本文到此结束,希望对大家有所帮助。