「用栈来判断回文数java」如何用栈判断回文
本篇文章给大家谈谈用栈来判断回文数java,以及如何用栈判断回文对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java只用栈判断字符串是否回文
- 2、用栈的方法判断一个字符串是否为回文,JAVA语言。
- 3、用栈判断回文
- 4、用数据结构的栈和队列 写 回文判断
- 5、JAVA判断一个数据元素是字符的线性表是否为回文,要求用栈和队列JAVA
java只用栈判断字符串是否回文
import java.util.ArrayList;
import java.util.List;
public class StackTest {
/**
* @param args
*/
public static void main(String[] args) {
String str = "abcba";
System.out.println(str + "回文数:" + isPalindrome(str));
str = "abccba";
System.out.println(str + "回文数:" + isPalindrome(str));
str = "123321";
System.out.println(str + "回文数:" + isPalindrome(str));
str = "1238887321";
System.out.println(str + "回文数:" + isPalindrome(str));
}
/**
* p判断输入字符串是否为回文/p
* @param pValue String 输入待判定的字符串
* @return boolean 是否是回文
*/
public static boolean isPalindrome(String pValue){
// 堆栈一
ListCharacter stack = new ArrayListCharacter();
// 堆栈二
ListCharacter stack2 = new ArrayListCharacter();
// 字符串长度的一半
int haflen = pValue.length()/2;
for(int i=0;ihaflen;i++){
// 字符进栈
stack.add(pValue.charAt(i));
// 倒序进栈
stack2.add(pValue.charAt(pValue.length()-i-1));
}
// 标识符
boolean bFlag = true;
// 出栈并比较
for(int i=haflen-1;i=0;i--){
if(stack.remove(i) != stack2.remove(i)){
bFlag = false;
break;
}
}
// 返回比对结果
return bFlag;
}
}
你这是作业题吧,其实最简单直接用循环然后charAt()把第一个和最后一个取出来比较就可以了。要用栈的话,我就用List来模拟栈。我们知道栈只有两个基本的操作进栈和出栈,用ArrayList的add(),remove()来模拟进栈和出栈。上面的代码和你的思路是一样的,但是简化掉奇偶数的判定,因为是奇数的时候,最中间一个我们可以不用管它,是偶数的话就是前半部分和后半部分的比较。
用栈的方法判断一个字符串是否为回文,JAVA语言。
//判断是否是回文
import java.util.Scanner;
public class huiwen
{
public static void main(String args[])
{
Scanner sca=new Scanner(System.in);
String str=sca.nextLine();
int a=str.length();
int middle=a/2,i=3;
//char c1=(char) a,c2=(char) a;
for(i=0;imiddlestr.charAt(i)==str.charAt(a-1-i);i++)
{
}
if(imiddle)
System.out.println(str+"不是回文");
else
System.out.println(str+"是回文");
}
}
用栈判断回文
#includeiostream
using namespace std;
#define stack_size 50
typedef struct
{
char elem[stack_size];
int top;
int r;
}seqstack;
void intstack(seqstack *s)
{
s-top=-1;
s-r=s-top+1;
}
int push(seqstack *s,char x)
{
if(s-top==stack_size-1)
return(false);
s-top++;
s-elem[s-top]=x;
return(true);
}
int main()
{
seqstack a;
int flag=1;
char c;
intstack(a);
cinc;
while(c!='@')
{
push(a,c);
cinc;
}
a.top++;
a.elem[a.top] = '\0'; //字符数组要有结束符
a.top--;
int temp = a.top;
while(a.r+1!=temp) //存一临时变量,不然永远不相等
{
if(a.elem[a.top]==a.elem[a.r])
{
a.top--;
a.r++;
}
else
{
flag=0;
break;//设置跳出,不然退不出循环
}
}
if(flag)
cout"是回文";
else
cout"不是回文";
return 0;
}
若有疑问,请追问,满意请采纳
用数据结构的栈和队列 写 回文判断
用栈实现了判断回文数的操作,即把字符串依次入栈,然后出栈并依次和字符数组比较是否相等,从而判断字符序列是否回文数,代码如下:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define EMPTY 0
#define FULL 10000
#define MAX 10000
typedef char data;
typedef struct elem {
data d;
struct elem *next;
}elem;
typedef struct stack {
int cnt;
elem *top;
}stack;
void initialize(stack *stk);
void push(data d, stack *stk);
data pop(stack *stk);
bool empty(const stack *stk);
bool full(const stack *stk); //栈操作函数
void initialize(stack *stk)
{
stk-cnt = 0;
stk-top = NULL;
}
bool empty(const stack *stk)
{
return stk-cnt == EMPTY;
}
bool full(const stack *stk)
{
return stk-cnt == FULL;
}
void push(data d, stack *stk)
{
elem *p;
if (!full(stk))
{
p = (elem *)malloc(sizeof(elem));
p-d = d;
p-next = stk-top;
stk-top = p;
stk-cnt++;
}
}
data pop(stack *stk)
{
data d;
elem *p;
if(!empty(stk))
{
d = stk-top-d;
p = stk-top;
stk-top = stk-top-next;
stk-cnt--;
free(p);
}
return d;
}
int main(void)
{
data input[MAX];
stack temp;
int i = 0;
int flag = 0;
initialize(temp); //初始化临时栈
scanf("%s", input); //输入字符串
while (input[i] != '@')
{//字符串入栈
push(input[i], temp);
i++;
}
while (!empty(temp))
{//字符依次出栈和字符数组比较,判断是否回文数
if (temp.top-d == input[flag])
{
pop(temp);
flag++;
}
else
{
printf("此字符序列不是回文数!\n");
break;
}
}
if (empty(temp))
printf("此字符序列是回文数!\n");
return 1;
}
运行结果:
JAVA判断一个数据元素是字符的线性表是否为回文,要求用栈和队列JAVA
import java.io.*;
public class HuiWen {
String reverse(String w1) {
String w2;
char []str1 = w1.toCharArray();
int len = w1.length();
char []str2 = new char[len];
for(int i = 0; ilen; i++) {
str2[i] = str1[len - 1 -i];
}
w2 = new String(str2);
return w2;
}
public static void main(String args[]) {
HuiWen hw1 = new HuiWen();
String pm ="";
try {
InputStreamReader Reader = new InputStreamReader(System.in);
BufferedReader input = new BufferedReader(Reader);
System.out.print("give your test String :\n");
pm = input.readLine();
}catch(IOException e) {
System.out.println("exception occur..");
}
String w2 = hw1.reverse(pm);
if(w2.compareTo(pm) == 0) {
System.out.println("It is a HuiWen");
}
else {
System.out.println("It is not a HuiWen");
}
}
}
用栈来判断回文数java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于如何用栈判断回文、用栈来判断回文数java的信息别忘了在本站进行查找喔。