
正文
java链表回文串代码 java怎样向链表里输入数据
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java 回数的代码是什么?
1、可以把这个5个数分解存在一个数组里面
2、通过循环判断是否相等,循序次数就是长度整除2
在设置一个状态标记,为TRUE就是回数,为false就不是,在循环中,一旦不相等就把状态标记改为false,终止循环,当循环结束时,状态标记还是为true就是回数。
import java.util.Scanner;
/*
* 第三章 java运算符
* 课后作业 判断回文数
* 5.2.1 由用户输入一个整数,判断是不是回文数(完全对称的数),如果是 打印 true, 否则打印false
* 提示:本题仅要求判断一个五位数是不是回文数
* 通过除法运算和求模运算符,可以分别求出一个五位数的每位上的值,然后进行比较。
* Palindrome 回文数
*/
public class zuoye0352 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入要判断是否为回文数的数值:");
int i=sc.nextInt();
String str=""+i;
if(str.length()%2==0){
System.out.println(i+"不是回文数!"+str.length()%2);
}
//判断反转后 值是否相等 从而
else if(i==fanzhuan(i)){
System.out.println(i+"是回文数~");
}
else
System.out.println(i+"不是回文数!");
}
private static int fanzhuan(int input) {
int output = 0;//
while(input0){
//output= output*10;
output=output*10+input%10;
input=input/10;
}
return output;
}
}
相关问答
Q1: java判断一个链表是否是回文结构
回文结构就是节点数据对称的。例如:1-2-3-2-1.
实现方式,用辅助栈,遍历链表存入栈中。之后pop栈中元素与链表数据比较,相同是回文结构。
代码如下:
Q2: 求用java判断一个4位回文数代码
public static boolean check(int k){
String str = ""+k;
int strLen = str.length();
int point = strLen;
int oldLen = 0,newLen = 0;
char first = 'a',end = 'a';
oldLen = (strLen+1)/2;
if (str == "")
{
System.out.println("数值为空");
return false;
}
if(str.length() !=4){
System.out.println("不是四位数");
return false;
}
for (int i=0;ioldLen;i++)
{
first = str.charAt(i);
end = str.charAt(point-1);
point--;
if (first == end)
{
newLen++;
}
}
if (oldLen == newLen)
{
return true;
}else {
return false;
}
}
public static void main(String[] args) {
for(int k = 1000;k9999;k++){
boolean is = check(k);
if (is)
{
System.out.println(k+"是回文数");
}else {
// System.out.println(k+"不是回文数");
}
}
}
1001是回文数
1111是回文数
1221是回文数
1331是回文数
1441是回文数
1551是回文数
1661是回文数
1771是回文数
1881是回文数
1991是回文数
2002是回文数
2112是回文数
2222是回文数
2332是回文数
2442是回文数
2552是回文数
2662是回文数
2772是回文数
2882是回文数
2992是回文数
3003是回文数
3113是回文数
3223是回文数
3333是回文数
3443是回文数
3553是回文数
3663是回文数
3773是回文数
3883是回文数
3993是回文数
4004是回文数
4114是回文数
4224是回文数
4334是回文数
4444是回文数
4554是回文数
4664是回文数
4774是回文数
4884是回文数
4994是回文数
5005是回文数
5115是回文数
5225是回文数
5335是回文数
5445是回文数
5555是回文数
5665是回文数
5775是回文数
5885是回文数
5995是回文数
6006是回文数
6116是回文数
6226是回文数
6336是回文数
6446是回文数
6556是回文数
6666是回文数
6776是回文数
6886是回文数
6996是回文数
7007是回文数
7117是回文数
7227是回文数
7337是回文数
7447是回文数
7557是回文数
7667是回文数
7777是回文数
7887是回文数
7997是回文数
8008是回文数
8118是回文数
8228是回文数
8338是回文数
8448是回文数
8558是回文数
8668是回文数
8778是回文数
8888是回文数
8998是回文数
9009是回文数
9119是回文数
9229是回文数
9339是回文数
9449是回文数
9559是回文数
9669是回文数
9779是回文数
9889是回文数
哪不懂在问我吧
Q3: 判断单链表存储的字符串是否是回文字符串
链表 是通过“指针”将一组 零散的内存块 串联使用,内存块陈伟链表的 结点 ,没个链表的结点除了存储数据,还会使用 后续指针next 记录链上的下一个结点。
链表的第一个结点叫作 头结点 ,最后一个结点叫作 尾结点 ,头结点记录链表的基地址,而尾结点指向一个 空地址NULL 。
回文串 是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。
判断是否是回文字符串的步骤:
1.创建一个结点类(包含存储的数据和next指针):
2.将一个字符串转换称为一个单链表:
3.判断一个单链表存储的字符串是否是回文:
空间复杂度为 O(1) ,时间复杂度为 O(n)
参考java单链表存储的回文串
Q4: java编写回文数
按照你的要求编写的,输出从0到max中用二进制表示和十进制表示都是回文数的Java程序如下:
import java.util.Scanner;
public class CCF {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入一个整数:");
int max=sc.nextInt();
for(int i=0;i=max;i++){
String num = String.valueOf(i);
String num2=Integer.toBinaryString(i);
String reversenum=new StringBuffer(num).reverse().toString();
String reversenum2=new StringBuffer(num2).reverse().toString();
if(reversenum.equals(num) reversenum2.equals(num2)){
System.out.println(i+"用二进制表示"+num2+"和十进制表示"+i+"都是回文数");
}
}
}
}
运行结果:
请输入一个整数:1000
0用二进制表示0和十进制表示0都是回文数
1用二进制表示1和十进制表示1都是回文数
3用二进制表示11和十进制表示3都是回文数
5用二进制表示101和十进制表示5都是回文数
7用二进制表示111和十进制表示7都是回文数
9用二进制表示1001和十进制表示9都是回文数
33用二进制表示100001和十进制表示33都是回文数
99用二进制表示1100011和十进制表示99都是回文数
313用二进制表示100111001和十进制表示313都是回文数
585用二进制表示1001001001和十进制表示585都是回文数
717用二进制表示1011001101和十进制表示717都是回文数
Q5: java统计字符串的连续子串是回文串的个数
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 ListString getLongestPalindrome(String theString) {
int strLen = theString.length();
ListString results = new ArrayListString(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);
}
}
}
关于java链表回文串代码和java怎样向链表里输入数据的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






