「用栈来判断回文数java」如何用栈判断回文

博主:adminadmin 2023-01-24 18:51:12 394

本篇文章给大家谈谈用栈来判断回文数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的信息别忘了在本站进行查找喔。